PARQUET-79: add a streaming Thrift API, to enable processing the metadata as we read it and skipping unnecessary fields.

This pull request provides an API to read thrift in a streaming fashion.
This enables ignoring fields that are not needed without loading them into memory.
It also aloow treating the data as it comes instead of when it's fully loaded in memory.
Feel my self just being talkative here. But I'm wondering if we can name T to be ValueType.

I know there is little benefit here in this case, since T is pretty straight forward. It's just recently I read too much code both in scala and java that has many type parameters and each with only one letter like doSth<W,H,A,T>, which is so hard to read.

What could happen if in the coding guide we force all type parameters to be meaningful words instead of one letter(considering there is only 26 letters in English)?