Backward compatible support for versioned format upgrades.

This patch adds a new binary serialization factory that
produces 30-40% more compact representations of repository
blobs. Sets it as the default format for the BDBJE backend
while still supporting repositories with the older serialization
format.

Both factories are in the org.geogit.storage.datastream
package.
Fix TextSerializationFactory to correctly handle null envelopes.

In the case of serializing Bucket envelopes, it wasn't using the
'null' marker for nil envelopes line when serializing Node instances.
This lead to nil envelopes to be serialized as "0;-1;0;-1" and when
deserialized, the Envelope constructor switched the ordinates, hence
resulting in a non nil Envelope. Bug exposed by the new bounds checks
on RevTreeSerializationTest.assertTreesAreEqual(...).