Extend usage of type specialization

Invoke-like methods now return Object.
We use implicit casts from SOM objects to Java natives to avoid the implementation of all possible combinations for primitives and specializations. Another benefit is that we do not have to manually unwrap values any longer. That's now take care of by generated code.
Frame access is now also specialized by type, so that the frame object might be optimized accordingly.
Consequently, the VariableNode classes have been adapted.
[TODO-REPORT: benefits, and drawbacks, the interpreter becomes really slow now.]

Signed-off-by: Stefan Marr <git@stefan-marr.de>
Removed support for boolean from type system

Does not seem to be worth it.
Also, at the moment, I am using implicit casts from SOM objects to Java primitive types, but there is no simple cast and check for booleans, since they are just normal objects and not builtin types.
The interpreter gets a little faster again after removing the booleans.
[TODO-REPORT: tradeoffs, complexity, speed, expected gain]

Signed-off-by: Stefan Marr <git@stefan-marr.de>
Avoid creation of proper SOM objects where possible

The strategy is here to rely on central points that cast to SAbstractObjects and create the SOM objects when necessary. Until then, objects can remain 'unboxed'.

[TODO-REPORT: describe this strategy]
[TODO: look into the arithmetic primitives that don't use ExactMath, and try to avoid Object as return type for situations involving int and BigInteger, try to use rewriting on exception]

Signed-off-by: Stefan Marr <git@stefan-marr.de>
Remove specialization that is generated automatically

Signed-off-by: Stefan Marr <git@stefan-marr.de>
Generalize send methods to handle Object and not just SAbstractObject

Made them static inside SAbstractObject.

Signed-off-by: Stefan Marr <git@stefan-marr.de>
Use ExactMath for Subtraction as well, also use Number as return value for bigint and int helper

Signed-off-by: Stefan Marr <git@stefan-marr.de>
Merge branch master into type-specialization

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

Conflicts:
	src/som/compiler/Parser.java
	src/som/interpreter/Arguments.java
	src/som/interpreter/Method.java
	src/som/interpreter/nodes/AbstractMessageNode.java
	src/som/interpreter/nodes/FieldNode.java
	src/som/interpreter/nodes/GlobalNode.java
	src/som/interpreter/nodes/ReturnNonLocalNode.java
	src/som/interpreter/nodes/VariableNode.java
	src/som/interpreter/nodes/VariableWriteNode.java
	src/som/interpreter/nodes/messages/BinarySendNode.java
	src/som/interpreter/nodes/messages/KeywordSendNode.java
	src/som/interpreter/nodes/messages/TernarySendNode.java
	src/som/interpreter/nodes/messages/UnarySendNode.java
	src/som/interpreter/nodes/specialized/IfTrueIfFalseMessageNode.java
	src/som/interpreter/nodes/specialized/IfTrueMessageNode.java
	src/som/primitives/BlockPrims.java
	src/som/primitives/ObjectPrims.java
	src/som/primitives/Primitives.java
	src/som/vmobjects/SAbstractObject.java
	src/som/vmobjects/SMethod.java