Major structure changes and key/value file interface

Changed field so it was comparable.
Changed Database interface so it more sensibly returned the arraylist of
identifiers directly.
Changed existing code to work with this new definition. The database
definition also now takes Field's as parameters, not byte arrays. Let
the database handle that.

My changes were to create a new database called IntegratedFileDatabase
which implements the Database specification. It uses two separate
databases to achieve this, a FieldDatabase, which stores the fields in a
binary tree structure on file. IdentifierDatabase is the other piece,
which stores the identifies, using linked lists. Using these two
together the IntegratedFileDatabase is able to provide the same
functionality as the LinearMemoryDatabase.

I have not implemented anything with actual files. Currently all tests
are using MockChunkRandomAccess, which implements ChunkedAccess.
ChunkedAccess provides a specification for which our file handling
system needs to implement. The mock uses a byte array to simulate random
access to a file.

Tests were created for all the databases, but certainly more can be
added.
The ValueFileNode and BinaryFileNode are the data structure wrapping
identifiers and fields respectively, allowing the binary tree mapping to
a linked list to happen.
Added remove identifier functionality

Finished implementing the database interface
Made small changes to the MockChunkRandomAccessFile to prevent errors.
Added some tests.
Extracted more common functionality to ChunkedAccess