Use ByteBuf-based api to read magic.
Reading file metadata using zero-copy API
Reading chunk using zero-copy API
Add ByteBufferInputStream and modify Chunk to consume ByteBuffer instead
of byte array.
Read from ByteBuffer instead of ByteArray to avoid unnecessary array copy
through read path.
Using Writable Channel to replace write to OutputStream one by one.
Merge remote-tracking branch 'origin/master' into ByteBufferRead

Conflicts:
	parquet-column/src/main/java/parquet/column/values/dictionary/PlainValuesDictionary.java
	parquet-column/src/main/java/parquet/column/values/plain/FixedLenByteArrayPlainValuesReader.java
	parquet-hadoop/src/main/java/parquet/hadoop/ParquetFileReader.java
	pom.xml
Add original readIntLittleEndian function to keep compatible with previous
verision.
Add a Hadoop compatible layer to abstract away the zero copy API and old
API.
Move CompatibilityUtil to parquet.hadoop.util.
Use reflect to call new API to keep compatible.
Implement FSDISTransport in Compatible layer.
Fix bugs in Binary.
Make BytePacker consume ByteBuffer directly.
disable enforcer to pass build.
Merge bfcb7d449773da5651d0548caaff433a2e827295 into 9ad5485c3310a8c51510ea50e24834b6cf98c45c
support addition OriginalType values: DATE, TIME, FINETIME, TIMESTAMP, TIMESTAMPTZ, INTERVAL
Make constructor for PrimitiveType that takes decimalMetadata public.
Update Snappy Codec to implement DirectDecompressionCodec interface
WIP-Update Pom and add function to read into preallocated ByteBuffer