HBASE-8201 OrderedBytes provides order-preserving serialization

OrderedBytes provides a serialization format in which the resulting
byte[] retains the same sort order as the natural types. Serialized
formats can be inspected and decoded without forward knowledge of
their content. Implementations are provided for Numeric values with up
to 64 bits of precision, Strings, and byte[]. Utility methods for
counting and skipping encoded entries are also provided.

The encoding format is modeled after the SQLite4 key encoding format.
Javadocs on the OrderedBytes class describe the encoding format in
detail. See http://sqlite.org/src4/doc/trunk/www/key_encoding.wiki for
additional context.

Notable deviation from the sqlite spec include:
 - different header byte values.
 - Blob-last is modified to include a termination byte of 0x00. This
   is necessary in order to maintain reverse sort order of empty
   values. This may make the two Blob encodings redundant.
 - Blob-mid does not require a termination byte.
 - support for fixed-length encodings.