This is the start of repeated field support.

Very messy work-in-progress of adding array support to cpp-parquet.
I've modified the AvroSchemaWalker to detect and support ARRAY
types (only of INTS for now) in JSON schemas, checked in an example JSON
schema with an ARRAY of INT fields, and copied some code from Impala
that will do the actual RLE & bitpacking of the repetition levels.
However, none of it builds or writes any repetition levels right now.
Add some more code from Impala

There were some bit utility functions (Ceil and TrailingBits) from
Impala that I still needed.  Rather than copying the entire file
containing those two functions over, I copied those two functions into
bit-stream-utils.inline.h.  I also copied compiler-util.h for the branch
prediction macros that are used in the BitWriter & BitReader classes.
No effort was made to maintain the original Impala directory structure
but if we end up copying more code out of it, I will create something
more sane.  FYI, this code still has not been tested although it
should build.