merge latest master changes into Eli's branch

WIP merge from Master into sideboard-sqlalchemy, so that Vicki and Dom's changes can make it into ubersystem 2.0

(People might call me crazy, but p4merge (perforce) is still a great tool for these tricky 3-way merges.)

Eli, I -think- I did all the unpleasant work for this and you might be OK to pull this into your branch and see what happens.  There are some issues to be addressed which I've outlined here:
https://docs.google.com/document/d/1p0AReHCmCatfp0GwTbilvovIZSc6fjKZIWPxKSiVINY/edit

I propose after your branch is ready to go, we rename 'master' to 'uber1-master' and make your branch the master.

For 8.5 we should stick with uber1, and for 13 we should go with uber2 here.  After 8.5 is done, uber1 goes away.

All 8.5 changes at this point should be pretty minor little bugfixes here and there.  Eli, big merges suck, so if you can, from this stage on, let's try and keep the changes from master into this sideboard branch so that when it's time to roll out m13, it's not a big deal.