Adding support for extensions also renaming test classes

Introduced a new ExtensibleObject base class which is a dynamic object. To set an extension you can either cast to dynamic OR you can use the new SetValue / GetValue methods.

This is a fix for #47