WIP: Initial commit.  Working prototype for at least single input/single output models.
Add a very simple test for model composition
It turns out comparing a single-element ndarray with a scalar returns a True-like value, so ensure that we actually get a float when a float result is expected.
Properly support compositions with array-like values and with multiple output models
Rudimentary support for using model *instances* in expressions as well as classes
Initial support for giving custom names to model classes
Add initial support for assigning custom names to models, as well as creating new model classes with custom names.
Fix sharedmethod to not cache created classmethods and instancemethods.  In retrospect it should have been blatantly obvious that was a bad idea, and unnecessary anyways.  Turns out Python creates a new method object every time you access a method on an object anyways (this is still reasonably efficient, as it uses a cache of already malloc'd PyMethodObjects and just updates the im_func and im_self pointers on those objects).
This is still temporary code, I think. But this fix is needed to properly support parameterless models here.
Some improved representation for model classes themselves.  There's room for improvement here but this is a start.
Add a new method for formatting an expression tree as an actual binary expression.  This requires one input which is a mapping of operators to a numerical precedence so that the correct order of operations can be determined.  This ended up looking a lot like ExpressionTree.evaluate, which might be able to be used to implement this with a little refactoring.
Reformat format_ascii_tree a bit, supporting numerical labeling of leafs.  This method still needs more work though :/
Initial work on better repr for CompoundModel classes.
A better default docstring for __call__ -- this can still be greatly improved, later.
Fix basic composition of models with different numbers of outputs
Allow a name to be specified on compound model instances
Don't repr ExpressionTrees as an ascii tree for now, at least not until the enhancements to the tree display are complete.
Fixed some model repr-related tests that broke as a result of 569acf9f43a73dc1c991a210d03cea585c3f926e
Updated so that when combining two model *instances* in an expression a new instance is returned, rather than the class itself.  If the class is for some reason needed it can still be gotten at, but in most cases it seems to be clearer if we just return an instance.
A bit of reorg--just moving the old composite model stuff to the bottom so that it's out of the way while I do a little more reorg.