Completely rework metamethods again.

Metamethods now only need to be defined in either the object itself or in its prototype.
Upon creation in the VM, each object is handed a MondState which is used to dispatch metamethods.
The result being a mostly transparent implementation in the C# code, and less boilerplate in the Mond code.

* New metamethod semantics is to prefix two underscores to the operation.
* Replaced example to illustrate the new implementation.
* Add new __serialize metamethod.