Add RecordID class

Adds a `RecordID` class that can repesent record id values.
This allows us to differentiate between record ids and strings
that look like them.
expose RecordID
Refactor parser.js into separate modules

Refactors the monolithic `parser.js` into separate modules
and generally tidies up the code a bit.
add custom error classes for easier / better error handling
remove legacy tests
add mocha dev depedencies, remove TAP
add more custom errors
add utility helpers
update test runner
move the old components to a legacy dir for now
add new server class
refactor serializer / deserializer
add common constants
re-import long.js
add protocol writer helper
add operation base class
add operation queue class
add operations and tests
add db class and tests
remove aborted attempt at refactor