Mngt of available execution units + location preferences [WIP]

Management of available execution units: the Infrastructure manager now keeps
track of how many execution units are in use / free, so it knows when there are
no more execution units available on a TaskManager and schedules accordingly
(instead of the previous round-robin scheduling, which assumed that the query/all
queries will fit).

Location Preferences: Task's can specify a task to which co-location is necessary
or preferred (e.g. Update operator needs to be co-located to its mutable dataset,
head/tail datasets of iterations need to be co-located, HDFS sources should preferably
be scheduled on input splits). The scheduler then tries to fulfill these preferences
as possible and otherwise schedules nodes from sources to sinks (for a potential lazy
unrolling in the future).

missing: topologies are currently never de-registered at the WorkloadManager, so that
the InfrastructureManager currently never knows when execution units become available
again.