Inherit banner and colorizer settings from parent Spaces.

This patch allows sub-Spaces to inherit banner and colorizer settings from parent Spaces when not overridden.

Notes:

- I'm using pretty aggressive caching to keep the resulting values. This means that it should only have to walk the tree of parent Spaces the first time the Space is viewed; otherwise it's a single SELECT from the cache table. Caches for children Spaces are cleared when the parent is updated.
- The code for figuring out banner settings was refactored *really heavily* and will need lots of testing to make sure everything still works the same. But, hopefully, the new version is easier to read and understand.
- Testing that the colorizer inheritence works is annoying, because when you switch to the parent to change it's colors (to see that they change in the child too), you will be changing the OG context to the parent. So, if you switch tabs back to the child, when you reload you'll get the parent colors. But if you navigate to the main child Space page, you'll get the child colors again.
- Selecting "Reset colors to default" will take the Space back to the parent Space's colors, rather than the theme defaults (unless it's a top-level Space).

Please let me know what you think!