Adds metamethod support.

Metamethods are designed to be magic methods, fallbacks that are only invoked if there is no other alternative, they do NOT override default behaviour.
Metamethods need only be defined on an object like any other function in order to work, and they are only valid on objects.


The following metamethods are available to Mond userland code:

* __bool
* __add
* __sub
* __mul
* __div
* __mod
* __pow
* __lshift
* __rshift
* __and
* __or
* __xor
* __neg
* __not
* __gt
* __gte
* __lt
* __lte
* __serialize
* __get
* __set
* __eq
* __in
* __string

* Adds a workaround for C#'s type restriction on shift operator overloads to expose these to Mond.
* Adds new example to demonstrate metamethods.