Rename SetId() to setId()
Hopefully fixed a bug in the pact compiler for branching plans:
	- added a test case provided by Anja Kunkel from HU Berlin
	- my understanding of the bug is the following: During a check if additional pipeline breakers are necessary,
	the compiler checks for the LocalStrategy of a SinkJoinerPlan. The SinkJoinerPlan is a "fake" plan element to group multiple output sinks into one sink (the compiler assumes one root node, this is why a "fake" plan node is required).
	The local strategy of SinkJoinerPlan is initialized as NONE, which means that we just pass through the elements (which makes sence since we are talking about a sink) The initialization of a NONE-local strategy assumes only one input, not two.
	I replaced the LocalStrategy with BINARY_NO_OP, which is a NONE for two input.
	The compiler is now able to do its pipline breaker checks.
Merge pull request #89 from rmetzger/gith_compiler_bug2

Pact Compiler fix+testcase for SinkJoinerPlanNode
Make PartialSolutionHolder non-final in BulkIteration

This is needed because the scala frontend will create a custom
PartialSolutionHolder to allow it's magic to happen.
Make the placeholders in WorksetIteration non-final

This is needed for the magic that happens in the scala frontend.
Add support for passing objects to PACT contracts

Whole stack is changed so that input/output formats and PACT contracts,
respectively their builders, accept objects in addition to classes for
user code stubs.

So now one can do:
MapContract.builder(new CountWords())
in addition to:
MapContract.builder(CountWords.class)

Objects passed in this way need to be serializable. The advantage is
that one can now pass arguments in the constructor of the stub, store
them in the stub, and they will be available when the stub is run. This
is less cumbersome than using the Configuration to pass parameters.

This change was originally  necessary to allow the scala frontend to generate
usercode objects to pass to PACT contracts.