Remove Solution.Unassign.

Solution.Unassign is never used and is therefore dead code.
Remove old GM operator.

The old GM operator is going to be replaced by a proper GM operator.
Add Solution.AssignmentViolations.

Solution.AssignmentViolations is similar to Solution.AssignmentQuality,
but it only computes the violations portion.
Solution.Free is a no-op on nil Solutions
Add Solution.FindImprovements.

Solution.FindImprovements intends to find an event assignment that can be
improved in the given solution. It does so by calling Solution.improve on
each event. However, it iterates through the events in a random
permutation and so the first one that it finds is the one it returns. This
is equivalent to doing Solution.improve on each element and picking one
randomly.

Solution.Improve is renamed to Solution.improve. It is only called by
Solution.FindImprovements.
Add the orderingMessage type
Add the hill climbing routine, runHillClimbing

runHillClimbing tries to build a static variable ordering heuristic for
the (to-be-implemented) GM operator.
Refactor controller message handling. Controller launches HC.

Solution messages are now handled in a different method:
handleSolutionMessage. This prevents duplication of code for handling
solution messages from the hill-climbing goroutine and islands.

The controller now launches the hill climbing routine and forwards the
ordering to all islands. Islands do not yet listen for this message type.