Operator to update a mutable dataset with the data stream [WIP]

the update operator requires an update-UDF as well as key indices and needs to be
co-located to the mutable data set that should be updated. the operator then takes
every element and when the elements keyset matches the keyset of an element in the
mutable dataset, the UDF is called. non-null return values from the UDF then are
updates to the dataset.

missing: working mutable datasets (get the dataset driver to handle mutable datasets
as well) and an interface to manipulate mutable datasets from an operator (get, put,
contains)
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.
Added some methods to MutableDataset used by the UpdateOperator
pom: Use Hadoop 2.4.1
ArrayLists instead of LinkedLists to store elements in Operators
Sort operator: Regular Collections.sort instead of PriorityList

Hoping that this frees buffers on previous tasks (as the input is
consumed faster than when each element is inserted into a regular
list that's sorted later instead of insertion sort)..
Removed legacy code (for transferring groups over channels)
Scheduling changes: round-robin usage of machines + fixes