Removing all unsafe casts

- some of them are there to provide more definite type info
- and most of them to indicate the guarantee of a value being not null
There are removed because they should not be necessary, and will probably be removed from Graal entirely eventually

Signed-off-by: Stefan Marr <git@stefan-marr.de>
Added support for #doesNotUnderstand on non-SObject classes

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