Merge branch 'cleanup'
Add support for custom input formats

This adds an InputFormatProxy along the same lines as the other proxies.

Unfortunately, I couldn’t really figure out how to write a meaningful
unit test, so I implemented a (rather contrived) custom input format in
the integration tests to at least make sure the code runs.

A limitation is that the splits returned from the input format must be
standard Hadoop splits, as any input split must be serialisable and
that would require a significant amount of code.
Rename getInstance to wrapInstance
Dynamically get JobContext configuration

As JobContext changed from class to interface between Hadoop 1 and 2,
we get an IncompatibleClassChangeError if we try to use the proxy class
compiled to either of the versions with the runtime of the other.

By getting the configuration method dynamically, we ensure that you can
compile the proxy class with either Hadoop version, and independent of
version used, it should still work together with either runtime.
Non-system tests

The current integration test is more of a system test, and while unit
tests aren’t really possible for the hadoop proxies, there needs to be
some cheaper integration tests. As is, the integration tests are
difficult to extend and since they take ages to run, it is not at all
rewarding to do so.
Shard examples only makes sense with examples
RSpec future-proof existing specs
Bump RSpec to v.3.0
Description improvements
Use temporary directory
Move integration test_project into spec/resources
Move proxy integration specs into spec/integration
Rename integration_spec hadoop_system_spec
WIP: Unit tests

- Add mapper/reducer/combiner proxy unit tests
- Reorganize lightweight integration tests (inline examples)
- Split hadoop helpers for unit tests and integration tests