Add support for DECIMAL type annotation.

Changes:
* Add Types builder API to consolidate type building, consistency checks
* Update schema parser to support precision and scale on DECIMAL:
  required binary aDecimal (DECIMAL(9,2));
* Update writeToStringBuilder methods to add precision and scale
* Add DECIMAL conversion in ParquetMetadataConverter
* Add precision, scale conversion in ParquetMetadataConverter
* Add OriginalTypeMeta to hold type annotation metadata (e.g., scale)
* Add more testing to ensure compatibility
Fix primitive type equality for fixed with different lengths.
Add more tests for type builders.
Add test for decimal with unsupported primitive types.
Add Types builder API documentation.

Also add check that scale <= precision and test.
Simplify Types API by moving repetition.
Update documentation and formatting.
Fix maximum precision calculation, account for sign bit.
Add INT32 and INT64 as supported types for DECIMAL.
Implement code review changes.
Remove unchecked casts from Types.Builder.

This simplifies the logic so that either a return object is supplied
when a Builder is constructed, or the expected type is supplied so that
the code can check the return type is valid.
Fix more code review finds.
Merge pull request #355 from rdblue/decimal

Add support for DECIMAL type annotation.