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 integer and floating
point numbers with 32- and 64-bits of precision, numeric values of
arbitrary precision, Strings, and byte[]s. Utility methods for
counting and skipping encoded entries are also provided.

The encoding format is modeled after the SQLite4 key encoding format.
Implementations of variable-length encodings are very similar.
fixed-width encodings are modeled after the fixed-width formats
provided by the Orderly library. 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 sqlite4 spec include:
 - Different header byte values. This is to give users more room to
   place their own, custom encoding extensions as they see fit.
 - 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.
 - Support for fixed-length integer and float encodings.