Add Multi-theme support

Adds multi-theme support using the new THEMES setting.
You can specify all the themes that you will be using in python
dictionary form. The keys to the themes can then be used by other themes
to inherit.

This is still a work in progress, I have a couple things left to do including testing everything completely, a minor thing to prevent default settings from getting overwritten, and adding documentation. 

I am just making a PR so that I can close the old one #1297. So much has changed that I feel the old PR needed to be closed completely.
I wonder if we can rethink this in a way to make it more flexible so that it allows the user to control the ordering to make them inherited and remove simple from their settings.

```python
THEMES = (
    # ordered templates
    'notmyidea',
    'default',
    'simple',
    'base',

    # prefixed loaded
    ('!foo', foo),
    ('!foobar': foobar),
    ('!simple': 'simple'),
)
```

Not 100% on this syntax, there might be something clearer.

What do you think @th3aftermath?