[Major] implemented new ObjectRef referencing of objects with locking

Locking is not yet implemented, but is now prepared. This is once again
a major rewrite but this has lead to easier use and less if/else
constructs but far more object oriented delegation and double
dispatching where possible