Add RecordEvent Serialization

This patch adds serialization to the record events allowing them to
be stored in binary form on disk. This is necessary for the journal
to be able to write them to disk and retrieve them consistently.
Fix Datastore and add RecordEvent Serialization

This patch fixes a bug with the Datastore delete method and adds
serialization to the RecordEvent class. In order to effectively add
the serialization, the inheritance hiarachy of the RecordEvent classes
has been collapsed into a single interface. This poses little change
to the structure of the program.
Add DataController and Journal

This patch adds the required functionality for the DataController and
the scaffolding for the Journal. The DataController has the ability
to process transactions, break those transactions into events, and
then send those events to the journal for recording. It then has the
Datastore act on those events and returns the packaged results.