What's Changed
* parse unknown message IDs by semuadmin in https://github.com/semuconsulting/pynmeagps/pull/65
ENHANCEMENTS:
1. Enhance NMEAMessage to parse unrecognised* NMEA sentence types to a nominal `<NMEA(TTXXX, NOMINAL, field_01=x...)>` message structure if `VALMSGID` validation flag is *not* set, rather than raise a `NMEAParseMessage` error e.g.:
A. with the `VALMSGID` flag *not* set (*the new default behaviour*):
shell
from pynmeagps import NMEAReader
msg = NMEAReader.parse("$GNACN,103607.00,ECN,E,A,W,A,test,C*67\r\n")
print(msg)
<NMEA(GNACN, NOMINAL, field_01=103607.00, field_02=ECN, field_03=E, field_04=A, field_05=W, field_06=A, field_07=test, field_08=C)>
B. with the `VALMSGID flag` set:
shell
from pynmeagps import NMEAReader, VALMSGID
msg = NMEAReader.parse("$GNACN,103607.00,ECN,E,A,W,A,test,C*67\r\n", validate=VALMSGID)
print(msg)
pynmeagps.exceptions.NMEAParseError: Unknown msgID GNACN, msgmode GET.
\* unrecognised message types include those with unknown or invalid NMEA msgIDs (*but valid payloads and checksums*), or valid NMEA sentences whose payload definitions are not yet in the public domain (e.g. those currently commented-out in [`NMEA_MSGIDS`](https://github.com/semuconsulting/pynmeagps/blob/master/src/pynmeagps/nmeatypes_core.py#L207)).
1. Add NMEA ALF sentence definition.
1. Add `validate` argument to `NMEAMessage` and carry forward from `NMEAReader`
1. Add logger to `NMEAMessage`.
**Full Changelog**: https://github.com/semuconsulting/pynmeagps/compare/v1.0.40...v1.0.41