Merge

Opening for feedback.

Tests are all passing except for a few strange anomalies that typically happen between 8PM and 12AM for me. I haven't even started manual testing yet - mostly I wanted to get basics working. However, the changes I needed to make to the unit tests (mostly related to caching and settings) imply that everything should look pretty good. I know I'll have to do some messing around with the CompanyUser db_table/columns, but that's the only real problem I forsee.

As far as deployment goes, the only thing that should need to change is the settings file. Because settings.prod.py and friends shared the same name in apps I had to namespace-ish them. We might have to mess with celery, but I'm not 100% sure about that.

I'm not too thrilled with the way I had to do seo/tests/setup.py. I'd be interested in suggestions for other ways to do that. Other than that I'm pretty happy with things, surprisingly.
We're already using getattr,, so we can save the call to isinstance and conditional by nesting them:
```python
kwargs['pk'] = getattr(bundle_or_obj, uid, getattr(bundle_or_obj.obj, uid, '')) 
```