Model rearrange

a decent-sized change set to model.py and models.py.   I think this now makes a very workable, high-level Model class that can be subclassed easily (as models.py shows), that is also highly flexible, and can be used to build composite models.

The docs need work, and we should add more tests.  Other than that, I think this is about done and would like comments / feedback.   When we can polish up the docs and add a more complete test suite, I think we should call this version 0.8.