PARQUET-4: Use LRU caching for footers in ParquetInputFormat.

Reopening https://github.com/Parquet/parquet-mr/pull/403 against the new Apache repository.

Author: Matthieu Martin <ma.tt.b.ma.rt.in+parquet@gmail.com>

Closes #2 from matt-martin/master and squashes the following commits:

99bb5a3 [Matthieu Martin] Minor javadoc and whitespace changes. Also added the FileStatusWrapper class to ParquetInputFormat to make sure that the debugging log statements print out meaningful paths.
250a398 [Matthieu Martin] Be less aggressive about checking whether the underlying file has been appended to/overwritten/deleted in order to minimize the number of namenode interactions.
d946445 [Matthieu Martin] Add javadocs to parquet.hadoop.LruCache.  Rename cache "entries" as cache "values" to avoid confusion with java.util.Map.Entry (which contains key value pairs whereas our old "entries" really only refer to the values).
a363622 [Matthieu Martin] Use LRU caching for footers in ParquetInputFormat.
PARQUET-21: Fix reference to 'github-apache' in dev docs

Author: Tom White <tom@cloudera.com>

Closes #20 from tomwhite/git-remote-name-fix and squashes the following commits:

c7f8a18 [Tom White] Change 'github-apache' to 'apache-github' in docs to match script.
PARQUET-18: Fix all-null value pages with dict encoding.

TestDictionary#testZeroValues demonstrates the problem, where a page of
all null values is decoded using the DicitonaryValuesReader. Because
there are no non-null values, the page values section is 0 byte, but the
DictionaryValuesReader assumes there is at least one encoded value and
attempts to read a bit width. The test passes a byte array to
initFromPage with the offset equal to the array's length.

The fix is to detect that there are no input bytes to read. To avoid
adding validity checks to the read path, this sets the internal decoder
to one that will throw an exception if any reads are attempted.

Author: Ryan Blue <rblue@cloudera.com>

Closes #18 from rdblue/PARQUET-18-fix-nulls-with-dictionary and squashes the following commits:

0711766 [Ryan Blue] PARQUET-18: Fix all-null value pages with dict encoding.
PARQUET-22: Backport of HIVE-6938 adding rename support for parquet

This patch was included in hive after the moving the Serde to hive (included in hive 0.14+).  Backport is required for use with previous versions.

Author: Daniel Weeks <dweeks@netflix.com>

Closes #13 from dcw-netflix/backport-hive-6938-rename and squashes the following commits:

453367b [Daniel Weeks] Backport of HIVE-6938 adding rename support for parquet
PARQUET-25. Pushdown predicates only work with hardcoded arguments.

Pull request for Sandy Ryza's fix for PARQUET-25.

Author: Sandy Ryza <sandy.ryza@cloudera.com>

Closes #22 from tomwhite/PARQUET-25-unbound-record-filter-configurable and squashes the following commits:

a9d3fdc [Sandy Ryza] PARQUET-25. Pushdown predicates only work with hardcoded arguments.
Merge branch 'master' into alexlevenson/filter-api

Conflicts:
	parquet-hadoop/src/main/java/parquet/hadoop/ParquetInputFormat.java
	parquet-hadoop/src/test/java/parquet/hadoop/TestInputFormat.java