Allow constructor name to be overridden in subclasses.

So I appreciate that the implementation is, ahem, somewhat dubious. However, this does solve a pretty annoying thing.

It's always been pretty annoying to me that logging a model in development gives you a constructor name or 'child' or 'Model', rather than something useful. This is now even more confusing with ampersand state being the base constructor as logging an ampersand-model gives you a constructor like `State {cid: 'model4', ... }` which kinda couldn't be more generic.

This change (or something similar) would allow ampersand-model to rename the constructor something closer to what it is (at the very least Model or AmpersandModel), and optionally allow developers to rename stuff further down the chain too. e.g:

![b e e f y 2014-03-23 16-02-18](https://f.cloud.github.com/assets/78225/2493723/8370f430-b2a4-11e3-804c-44bbbac89aa5.png)