Database router and connection manager support
Extending the discussion from #582, I was unable to find a clean way to introduce module inspection into Peewee without also bringing in the concept of 'apps', which is way outside of its scope as an ORM.

The cleanest way I've found so far is to use a connection manager by wrapping each connection with a proxy and referencing it later on. The test case can then tell the database proxy to switch out the current connection for the test database connection.

However this breaks because `create_model_tables()` also requires models to be defined explicitly, and due to module inspection not being a clean way forward, the next alternative would be to maintain some sort of global registry of models. This could perhaps be achieved by using the `BaseClass` metaclass to place itself into a list on the peewee module.

Further more, `create_model_tables()` is unable to distinguish which classes are "base inheritance" classes, e.g. used by other models but not actually a model themselves. The best option I can think of would be to introduce a new meta option called `abstract`, similar to the one in [Django](1), which would prevent this problem from happening.

Naturally this would be quite a big change but none of these would be backwards incompatible. The proposal so far would be for;
- Database router
- Connection manager
- Models registry
- New meta option `abstract`
 In order to keep peewee simple I have chosen not to implement this type of functionality. The database is simply an attribute on the `Model._meta` object, so tooling could be built to change this at run-time, but at no point do I think peewee will include routers/connection managers like Django for example.
 Thanks for the quick reply, appreciated.

As an extension from #582, although Playhouse has an existing class for [ReadSlave](3), it doesn't appear to be a suitable replacement for database routers, as seen in [django](4). 

Admittedly adding support for database routers would most likely require some sort of connections manager, and would need some careful thought on design decision. For example, being able to automatically create/teardown test databases based on a database settings dictionary, similar to the [test db feature](5) in Django.

If such a feature would ever be considered, I will happily spend some time putting together a PR proposal, and would welcome comments/ideas before hand.

Thoughts?
