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.

A notable deviation from the sqlite spec is in the blob-last format.
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.

A notable difference between this specification and Java is the sort
order of NaN. This spec treats NaN as less than all values, including
null. Java sorts NaN as greater than any floating point value.
See http://docs.oracle.com/javase/1.5.0/docs/api/java/util/Arrays.html#sort(double[])