hadoopcompatibility: Implementations of basic programming interfaces and...

... a basic driver.

* wrappers for Mapper, Reducer and Combiner (as a local Reducer) on the new Java API
* wrapper for OutputCollector
* wrappers for Partitioner, values comparator.
* a driver making it posible to run unmonitored (so far)  Hadoop jobs on Flink.
* tests and variations of the WordCount driver exclusively in Hadoop.

You can find more about the Google Summer of Code project here:  https://issues.apache.org/jira/browse/FLINK-838?page=com.atlassian.jira.plugin.system.issuetabpanels:comment-tabpanel&focusedCommentId=14031511
I investigated why this is happening.

When we run tests, our tests run in a ```ContextEnvironment``` (e.g. a test environment) and for this environment the values in ```GlobalConfiguration``` have been already set.

However, in the case when we just run the user's job, since there is no test environment the local or remote environment have not been created yet.

This makes it impossible to use the task's maximum task slots since no environment has been started.

The solution would be to do perform this check for the limit of maximum tasks in parallel after this value has been initialized by its environment (after the job has actually started).

I have been working on some extensions and minor customizations of the environments (think of a ```HadoopLocalEnvironment```, for example) in order to support monitoring and counters with a plan to show them to you in the next PR. 

With these extensions, this would be definitely possible. Should I merge the relevant changes in this PR? Unless you think it is not necessary and have a different approach in mind.