Rename SMethod into SInvokable and make it abstract. Add concrete SMethod and SPrimitive to use polymorphism for distinguishing them

Signed-off-by: Stefan Marr <git@stefan-marr.de>
Introduce concrete SBlockN classes to distinguish them efficiently within the VM, also remove blockClasses dictionary and replace it with simple array

Signed-off-by: Stefan Marr <git@stefan-marr.de>
Change inline caching dispatch logic to reduce complexity on fast path

The inline cache has now a strict format.
It distinguishes between checks that are done based on Java classes, i.e., CachedDispatchSimpleCheckNode, and checks that are done based on SOM classes CachedDispatchSObjectCheckNode.

They are arrange in the list with the simple checks first, then a SObjectCheckDispatchNode in-between, which either finds that another Java classes has not been found in the cache and adds it, or leading to a comparison of SClasses in the cache.

The structure of the cache lists is strictly:

Send -> SimpleCheck --> ... --> SimpleCheck
   -> SObjectCheckDispatchNode
           +-> SObjectCheck --> ... --> SObjectCheck --> UninitalizedDispatchNode
           +-> UninitalizedDispatchNode

The ClassCheckNodes are removed.

Signed-off-by: Stefan Marr <git@stefan-marr.de>
InlinedDispatchNode: to be deleted

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