Added sanity checks to cache invalid object pointers early

- sprinkled assertions into the code
- implementation is based on a priori knowledge about the position of the vtable
- we use the vtable to check whether a pointer is likely a valid object
Warning: Only tested with generational GC

Signed-off-by: Stefan Marr <git@stefan-marr.de>
Clone method use temp variable to be more debuggable

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