Added TruffleSOM-based object model

- we store double and int values unboxed in the primitive fields of Object
- we still use the eager boxing model, and create objects as soon as we read from the Object's field
- storage locations can be polymorphic, so the field accessor node resolves the polymorphism
- FieldNode is the expression node that computes self (and value for the write node)
- the object layout is managed for each class, and objects are lazily migrated to the latest layout

Signed-off-by: Stefan Marr <git@stefan-marr.de>
Keep track of the initialization status of the object system

Signed-off-by: Stefan Marr <git@stefan-marr.de>
In TruffleSOM, we use 0 fields instead of -1. Should be ok, is corrected later on

- it makes the object layout easier to use, I think

Signed-off-by: Stefan Marr <git@stefan-marr.de>
Change Object and Class to support the object layout

Signed-off-by: Stefan Marr <git@stefan-marr.de>
Let's assume the assertion will always hold

- the typer needs otherwise to see that obj_class is a proper Class and not the nilObject, otherwise it does mess around with the _universe slot and adds it to AbstractObject

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