Implemented new Model.definition class decorator for Model classes

Addresses the important issue with the decorator system whereby the
methods could be called across any defined class regardless of the
appropriate method resolution order. This issues is described in more
detail in ioam/topographica#591
Integrated matchconditions with the new class decorator system

Methods decorated by @Model.matchconditions are now correctly processed
according to the correct method resolution order using the
Model.definition decorator.