Scrooge Write Support

This is just https://github.com/Parquet/parquet-mr/pull/391, reopened here.

The original PR description, with commit hashes updated:

>  - 7b066ba is most of the PR. It makes `ThriftWriteSupport` abstract, and pulls out all of the tbase-specific functionality into `TBaseWriteSupport`. I originally tried to go the path of least resistance - basically, remove the type constraints on `ThriftWriteSupport` and then subclass it in `ScroogeWriteSupport` - but I ran into a few issues, chiefly that `void write(T record)` on `WriteSupport` would've needed a cast (because of the lack of the `RecordConverter` abstraction in `ReadSupport`). The end result, though, seems actually pretty nice, and matches the reality that there are multiple implementations of thrift. I think `ThriftReadSupport` probably deserves the same treatment, but that seems out of the scope of this PR. Similarly, `ThriftBytesWriteSupport` could probably be a subclass of `ThriftWriteSupport` now, but I left that out of the changeset. If you'd like either to be part of this PR or a separate PR, let me know, I'm happy to do the work there.
>  - 3272ca0 and 9b7e456 do the (now simple) work of adding a `ScroogeWriteSupport`, `ParquetScroogeOutputFormat`, and adding write support to `ParquetScroogeScheme`, along with tests.