Split out the message processing code from the lower level communications code.
This is too facilitate the use of other communication media in the future.
Lost the CRC request flag in the send function.  Put back.
Modify the CSV loading so that it won't overwrite populated files.

Modify CSV logging (which by passes the in memory structures) to not write if there is a format difference between the file system and in memory versions.
Produce a warning message if an attempt is made to access an undefined field in the K400 device table.
Fix an access to an undefined field.
Rework the text display sliders so they use locals not table fields.

Fix an access to an undefed constant.
Take some of the nil guards off the removeTimer calls.
That function is safe being passed nil.
Remove a dependency on the CCITT code which is no longer required here.
Add some paranoia dealing with excess characters from messages (which should never happen).
Update the rinMessage library to use a small LPEG grammar to validate and decode message contents.

Also add an extra result to processMsg that returns any excess characters remaining after a message.  This should always return as nil or ""
Remove any complaints about excess after an error condition.  The processMsg routine will return the message string sans its first character on error.
Code streamlining.
Fully compile the grammar on load rather than reinterpreting the table each time.
Remove some redundant code from the slide routines.

These should be refactored into a single one size fits all routine.
Remove single use local functions in the various slide routines and inline them instead.
Include the excess data as a return in the last case.
Update the version number to 1.1.3
Change the serial B stream so that a non-specified timeout defaults to 100 ms instead of never.
Add RTC write functionality.

Either the time or date or both can be written.
All fields are range checked and validated.  Invalid fields are left undisturbed.
Move the month length local function outside of the RTC constructor.
Change the legal year range to begin 2010 instead of 2014 -- this matches the code's initialisation better but seems pointless.

Use the curent RTC year and month for the length of month computation when setting the day instead of the (possibly nil) arguments.