Changed layout of User Page to accommodate ADC calibration as well as
software reset data. Added new module NonVolatileMemory to manage this.
Removed RADDS configuration so that we don't need to support SAM3XA
flash memory. Increased number of stack words stored in software reset
data.
Moved exception handlers out of Tasks.cpp to separate module
ExceptionHandlers.
Changed number of decimal places reported in spindle RPMs from default
(7) to 1.
Moved some low-level functions from CanInterface to CanDriver and
started preparing CanDriver to support bith CAN interfaces.
Added L parameter (calibration factor) to laser filament monitor
configuration
Renamed GCodeChannel::USBchan back to USB for backwards compatibility
Tightened up JSON path parsing
Used NamedEnum for GCodeChannel and Compatibility
Added a check for bad channel numbers received from SBC
Fixed bugs in M220
Increased max number of MDNS services form 1 to 4
Added noexcept specifiers to functions in DataTransfer class
Refactored G-Code buffer and introduced global code channel type
G-code queue is always used when processing a file
Allow nullptr items in a OutputStack
Bug fix: Pausing via M25/filament didn't work with DCS during a macro file
Bug fix: File position wasn't saved while processing a macro file
Bug fix: Pausing state wasn't reported when M25 was issued during a macro
Bug fix: Status response could be unterminated when running out of buffers