Simplifies IntrinsicObjectModel and StructuredArrayModel declarations by deriving from generic types

 - Applies Mike Barker's changes to derive type from generic class and enclosing class when IntrinsicObjectModel and StructuredArrayModel anonymous derived classes are used.

 - Adds some cosmetic cleanup.

 - Adjust all examples and tests to use new anon class scheme.