Rework the Taskmanager to a slot based model and remove legacy cloud code

Squashed commit of the following:

  - Post merge cleanup
  - Renamed fractionMemory into memoryFraction.
  - Removed Local and QueueScheduler and replaced it instead with an unified DefaultScheduler.
  - Removed Local and ClusterManager and inserted instead an unified DefaultInstanceManager.
  - Removed connection IDs from execution edges
  - Removed InstanceType, InstanceRequestMap, InstanceTypeDescription, InstanceTypeDescriptionTypeFactory, PendingRequestsMap
  - Fixed problems with test cases.
  - introduced simple slot system for scheduling.
  - Removed subtasks per instance
  - Added registerTaskManager to the JobManager RPC calls. RegisterTaskManager is called only once where the hardware description information is sent.

Add: Merging cloudmodel remove with new network stack
Cleanup of merge with slot-based scheduler branch.
Removed RuntimeEnvironment instantiation from execution graph construction. Removed legacy job vertex classes and input/output tasks.
Added failing behavior to JobManager if it is still in scheduled or created state
New test case: Exception during ExecutionGraph construction in the JobManager
Removed checkConfiguration method from AbstractJobVertex because it is not needed anymore
Replaced Tarjan's algorithm with a simpler depth-first traversal cycle detection algorithm. By doing so, one gets rid off a possible linear time check whether a node is contained in the stack.
Streamlined job graph algorithms to get rid off linear contains operations.
Standardized creation of input and output channels in InputGate and OutputGate. Removed linear contains check in InputGate for channels.
Merge fix to omit input/output registering on JobManager
Rework Invokable Task Hierarchy
Add some options for slot-based scheduling and changed default parallelism to one.