Parquet 78 byte buffer write 20140904

Adds to dsy88's pull request and pull request #49. Adds a ByteBuffer api to the write path. 
The API's pass an allocator to allocate a byte buffer to read/write into. I've provided two allocators, one to allocate from Heap and the other to allocate from Direct memory.
The Allocator interface has a 'release' method to allow allocators that use ref counting to know when to release memory. 
Actual memory allocation happens in CapacityByteArrayOutputStream.