Adds research implementation of native method interface

The main advantage of this approach is that all native
methods share the same primitive number. Thus collisions
in different libraries are avoided completely.

In order to register a native method one should inherit
a class SmalltalkVM::TNativeMethod and implement the
only abstract method run().

Inside the method one may use standard VM API to instantinate
objects and perform calls.

Issue: #37
Takes advantage of method pointers to provide effective native method interface

Now native methods may be declared exactly the same
as any other method in the TObject descendants.
Direct field access is possible and recommended.

Before using native method one should be registered
in the VM by associating Smalltalk method selector of
a class to actual C++ method pointer to an implementation.

Convinient template is provided to help registering
all native methods of a class at once.

Issue: #37
Sample implementation of a native class

Issue: #37
Stub implementation of Array>>sort: as native method

Issue: #37
Adds native implementation of Dictionary>>at:

Issue: #37
Adds more template sugar to native API

Now native methods may be defined exactly
that they are meant to be.

Methods now declare individual arguments instead of
receiving TObjectArray and parsing them by hand.
Accessor methods may now have empty parameter list.

Template API will check the conformity of passed
method pointer to it's declared type. So, it would
be illegal to pass pointer to foo(TObject*, TObject*)
when initializing TNativeMethod.  This ensures that
pointers are compatible and calls are safe to perform.

Issue: #37