Acceptance rebase 20140926

These changes patch up some underlying bugs revealed from the rebase, and the tests appear to all be fine, though some of them have to run in isolation, possibly pointing to a problem with the webdriver.
You mentioned this was causing a circular import, correct? I don't remember what we said about the presence of this issue upstream - it does appear to be still the non-lazy version: https://github.com/edx/edx-platform/blob/master/common/djangoapps/course_modes/models.py#L9 . Is it an issue there?

One thing to consider carefully with this fixes is that we need to take into account the next rebase. Ie, why do we need to changes these? If they are an issue with upstream code, we should fix it upstream too, to have the fix ready on the next rebase. If they are an issue with our code, we should fix it in our code. If we just change upstream code, we'll pile up more and more conflicts each rebase, and it's going to be increasingly harder to reconsile the two.