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.