Refactor split migrator

LMS-2936

Also, a bunch of ancillary cleanups.
Removed a bunch of loc_mapper code
Cleaned up offering now being course and run in a few places
Removed extra db queries

Replaces https://github.com/edx/edx-platform/pull/4357
It would be nearly impossible to duplicate old mongo's defective behavior. This code is inspecting the old mongo object to correct it's mischaracterization not looking at split mongo's representation.

I believe the `elif` clause is important for the test but doesn't represent anything Studio does: that is, it's detecting that a sequential (leaf DIRECT_ONLY category) has some private children and thus the sequential is not really 'public' but is instead 'draft'. I don't think we ever call `compute_published_state` on DIRECT_ONLY things except in this test.

To "correct" split mongo would mean to have it never reply 'public' but always reply 'draft' if the feature flag for the new UI is not on.