Add CLI demo application

The demo application currently doesn't connect to the database,
however it does demonstrate the interface between user and database.
Eventually, commands will be sent to the database as well.
Add boost dependencies

This patch adds boost dependencies required by the server application
and includes a simple build script to take care of the initialization
of those libraries. Before building the project, the relevant boost
libraries must be built.
Add Serialization to Records

This patch utilizes Boost Serialization to allow for simple and
efficient serialization of the Record class thus allowing an easy way
for the data to persist on disk.
Add Datastore

This patch adds the Datastore class and provides methods to retrieve
a key given the path to the key. Per the design document, the
datastore has the responsibility of managing the disk storage as it
relates to the records.
Add Datastore write capability

This patch addresses the writing capabilities of the Datastore class.
The Datastore is now capable of both serialization and deserialization
of the records it contains.
Add RecordEvent Set

This patch adds the Set RecordEvent to the server. This event
represents the set operation and allows for arbitrary data to be set
to a record.
Update README.md for more detailed build instructions

As the title suggests, this updates the readme to be a little more
specific with regards to the build process. Following it exactly
should yield successful builds.
Add RecordEvent Delete

This patch covers the addition of the deletion events to in the
Datastore and fixes a few of the problems associated with creating
undefined records during record iteration.
Add RecordEvent Move

This patch covers the move event and utilizes previous facilities in
the Datastore and Record to allow keys to be easily moved.
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.
Use std::string instead of const char*

This patch unifies the choice of std::string vs const char* to be more
c++ friendly and cleans up some of the arithmetic associated with
character arrays.
Add Database class and server executable

This patch adds the Database class which controls the subsystems of
the entire system as well as expands on the initial iteration of the
server executable. Basic signal handling and argument parsing via
boost's asio and program options libraries have been implemented as
well.