Use hash to determine dirty status

Removed dirty flag from SCIFIOCell. Instead, comparing hashes of the
underlying data is used to determine dirty status.

This removes the ability to mark a cell as dirty without computing its
hash, but allows equality tests to include the underlying data.

Note that the dirty() method does not re-compute a hash of the
underlying data; that must be done via the update() method.
Added enableCaching flag to SCIFIOCell

This flag can be controlled via the cacheOnFinalize(boolean) method. If
true, the cell will attempt to cache itself when finalized.

This method is necessarsy to prevent infinite loops of caching (e.g.
when cells try to re-cache themselves after being cleared from the
cache).
Store SCIFIOCellCache id

The id for each SCIFIOCellCache was constantly being re-generated via
toString() calls, each creating a new object.

To avoid potential issues with making excessive numbers of small
objects, the id is simply stored on object creation.
Removed commit buffer from MapDBCache

Removed the threshold of modifications before running db.commit().

This will hurt performance under high cache access but was necessary to
guarantee consistentcy.

Ideally, one or more of the following should be done:
* Expose the db.commit() method so the consumer can decide when to
  commit
* Create read/write mode toggles. In a write-only mode any number
  of operations can be queued up and then batch written before
  reading.
Fix cache clearing

the clearCache method will now wait to confirm the caches are actually
clear before exiting.

Also, SCIFIOCells cleared from the caches will be disabled from
re-caching on finalize.
Standardized cell retrieval

Created a generic cell retrieval method for accessing, without removing,
cells from the underlying cache (e.g. to check what cell may already be
present on disk).
Thorough cache cleanup after tests

Ensured every configuration option is reset in the after method for each
test.

Also added a method to enable/disable caching in batches of cells, which
can be used to avoid re-caching cells.
CacheServiceTest refactored

Corrected erroneous test cases. Added a new test that waits for
finalization and garbage collection, to verify disk reading/writing and
perform regression tests for certain bugs (such as multiple cachings
failing).
Merge branch 'dirty-cache-detection'

Refactors the dirty detection system for SCIFIOCells.

Fixes critical bugs such as:

* infinitely caching cells
* multiple-cache failure

Adds tests for fixed bugs and improves test coverage.
Bumped mapDB version to 0.9.3

Updating to latest version.

0.9.2 -> 0.9.3
Bump to next development cycle

Signed-off-by: Mark Hiner <hinerm@gmail.com>