Support for Client-Less Drivers

**API-Support for Client-less Drivers**
 * Deprecated REEF.close(), as this won't be supportable without a client
 * Renamed ClientManager to REEFImplementation
 * Added a JobSubmissionHelper to hold Protobuf code of REEFImplementation
 * Moved the launcher parameters into the 1st class space and added a default value to ErrorHandlerRID and ClientRemoteID
 * Added checks for NONE wherever the ClientRemoteID is used.

**Updated the Local Runtime to support Client-less Drivers**
 * Moved ExecutorServiceConstructor to no longer be an inner class.
 * Shutting down the executor in the LocalJobSubmissionHandler.

**Added a demo of how to use the new API**
 * Added a HelloREEFNoClient that contains the version without a client.
Merge branch 'master' of github.com:Microsoft-CISL/REEF into weimer_749

Conflicts:
	reef-common/src/main/java/com/microsoft/reef/runtime/common/driver/client/ClientConnection.java
 * Un-deprecated `REEF.close()`
 * Made sure that `RemoteManager.close()` is called as part of `REEF.close()` if one was created.
 * Added some more logging
Merge pull request #755 from Microsoft-CISL/weimer_749

Support for Client-Less Drivers
[maven-release-plugin] prepare release reef-project-0.3
[maven-release-plugin] prepare for next development iteration
Updated the Wake and Tang dependency to 0.4-SNAPSHOT
Refactoring of the YARN resource manager

**Features added**
 * Closing #759: Drivers can now have `com.microsoft.reef.runtime.yarn.driver.YarnContainerRequestHandler` injected to file YARN resource requests in addition to also being able to use REEF requests.
 * Added a TrackingURLProvider to the YARN runtime

**Refactorings**
 * Split YARNContainerManager into smaller classes as opposed to one big one.
 * Renamed `com.microsoft.reef.runtime.yarn.master` -> `com.microsoft.reef.runtime.yarn.driver`
 * Worked with IntelliJ's code analysis to improve code quality.

**Improved shutdown logging and behavior of the Driver:**
 * Added logging of an idle shutdown
 * Added optional logging of the callstack to DriverStatusManager.onComplete()
 * Removed a case in which we would trigger DriverStatusManager.onComplete() twice
Porting Data Loading from canberra into reef-io
Exception handling improvements

**This closes #760:**
  * Added an interface `ExceptionCodec` which shall be used to (de-)serialize Exceptions. This replaces the use of `ObjectSerializableCode<Exception>`. The interface returns `Optional<Throwable>` upon deserialization, thereby geving a clean hint as to whether the Exception can be deserialized.
  * Added a default implementation of `ExceptionCoded` called `DefaultExceptionCodec` which does use Java Serialization.
  * Used an injected `ExceptionCodec` in all places where Exceptions were (de-)serialized using `ObjectSerializableCode<Exception>`

**Refactorings:**
  * Cleaned up the message passways in `EvaluatorManager` into more special cased methods like `.onEvaluatorFailed()`
  * Improved failure logging in the `FailTaskTest` `Driver`.
Added REEF-Poison
This project will host fault injection tools for REEF. So far, it contains a very simple failure injection for REEF contexts
Merge branch 'weimer_759' of github.com:Microsoft-CISL/REEF
Merge branch 'weimer_760' of github.com:Microsoft-CISL/REEF

Conflicts:
	reef-runtime-yarn/src/main/java/com/microsoft/reef/runtime/yarn/master/YarnContainerManager.java
Added the missing pom file
Merge branch 'weimer_poison' of github.com:Microsoft-CISL/REEF
Merge branch 'master' of https://github.com/Microsoft-CISL/REEF into weimer_newHeartbeatProtocol