LapByLapClient better handles reading racecache

The LapByLapClient does a better job now of handling the racecache,
including
  - checking if a file exists before trying to read,
  - better handling of errors,
  - better surfacing of errors through events,
  - using fs and path modules instead of string concat
LapByLap message timing fix and syntax cleanup

Moved the event of LapByLap completion into the callback so it'd emit
at the correct time.

Cleaned up some syntax highlighting.
Cleaned up updateLapByLap laps parser/emitter

The updateLapByLap laps parser/emitter hunk of code is now much cleaner
and more reliable.

It needs to be reviewed further for performance characteristics noted in TODO.
Cleaned up updatedLapByLap file write and emitters

The hunk to output the racecacheFile in updatedLapByLap cleaned up.
  - Easier to read
  - More sensible error/info handling
  - Uses the path joined filename
  - etc...

The final hunk of emitters in updatedLapByLap wiped, not needed,
legacy info.