Complete rewrite of message send handling.

TruffleSOM follows now more closely the other Truffle languages, and especially the SimpleLanguage. We do not distinguish between node arity anymore for the send node to avoid that code duplication.

In order to facilitate specialization for primitives, we introduce n-ary expression node specializations which can be subclassed to define special cases for certain message sends, which then typically are not implemented as message sends. The n-ary variants provide the necessary `executeEvaluated(.)` methods specific to their arity.

The MessageSendNode is based on a new structure that uses a separate DispatchNode to do the method lookup and inline caching if possible. The dispatch node is specializing itself independent from the message node. This design is based on SimpleLanguage.

Detailed design changes:
 - receiver (i.e. self) is treated separately from the arguments, this is mostly a conceptual decision, because I like to have access to the receiver directly in some way
   -> the parser keeps it however still with the other arguments [TODO: clean up this inconsistency]

 - AbstractMessageNode is the root class for message sends in the 'AST'
 - renamed Arguments to SArguments to distinguish it from the frameworks class
 - we only have one Arguments class now, no special handling anymore
 - removed BlockHelper, wasn't very useful anymore
 - removed ArgumentEvaluationNode
 - ArgumentReadNode is not specialized by arity anymore, but we distinguish between normal argument read nodes and self read nodes

 -  ClassCheckNode was moved into dispatch package
   -> super check was removed, this is now done on the level of message send nodes
 - ExpressionNode now includes constructor to propagate sourceSection, not yet adopted properly [TODO: propagate source section in constructor]
 - *SendNode implementations replaced by MessageSendNode
 - introduced interface PreevaluatedExpression for specialized nodes
    -> they are used directly with the results of the evaluation of their subnodes, i.e., receiver and arguments, and therefore need this common interface independent of their arity

 - adapted specialized nodes to new design

[TODO: see whether Universe.current() use has any drawbacks]

Signed-off-by: Stefan Marr <git@stefan-marr.de>
Added toString() to Variable

Signed-off-by: Stefan Marr <git@stefan-marr.de>
Missing calls to adoptChild

Signed-off-by: Stefan Marr <git@stefan-marr.de>
Remove Object[] from type system, was only needed for the ArgumentEvaluationNode, which got removed

Signed-off-by: Stefan Marr <git@stefan-marr.de>
Move execute(.) to superclass (Invokable)

Signed-off-by: Stefan Marr <git@stefan-marr.de>
Help the stupid partial evaluator by moving the loop into its own method

[TODO: report this, such limitations are serious annoyance in practice]

Signed-off-by: Stefan Marr <git@stefan-marr.de>