Initial int96 implementation.

This primarily adds int96 calls throughout the read and write paths.
Int96 is mostly a place-holder class that wraps a ByteBuffer.

This adds int96 support to the PLAIN and PLAIN_DICTIONARY encodings.

Existing tests are passing.
Extending example and group classes for int96.

This commit gets TestColumnIO#testOneOfEach passing with an int96
column.
Removing Int96 class, using Binary instead.

This removes all references to the Int96 class and uses Binary instead.
Int96 calls are still used at the RecordConsumer and Converter level,
specifically used by PrimitiveType.PrimitiveTypeName.INT96.
Remove int96 references from RecordConsumer and Converters.

This commit removes int96-specific code from the RecordConsumer and
the Converters. Implementations are responsible for checking the Type of
columns.

Because Binary is used for int96 values, it is no longer assumed that
a Binary is printable as a UTF8 string in methods like Binary#toString.
Delegate fixed and int96 types to convertBINARY.
Merge Fixed dictionary with Binary dictionary.
Factoring out common Binary impl in dictionary writer.
Use toStringUsingUTF8 to fix tests.

Binary values will not necessarily decode with UTF8, but the
ExpectationValidatingRecordConsumer can decode because its inputs are
controlled for testing.
Add NanoTime to example.

This adds NanoTime to the example objects, stored as an int96, for
testing.