Make DraftModuleStore mongo only

DraftModuleStore was originally designed as a mixin, but never used that
way, and with the upcoming changes to use the versioned module store,
never will be. This changes removes a circular dependency between
mongo.py and draft.py.
Force locations to be Location objects earlier
Customtags can't be inserted by studio
Work around XBlock limitations to force persistance of field mutation
Make DraftModuleStore mongo only

DraftModuleStore was originally designed as a mixin, but never used that
way, and with the upcoming changes to use the versioned module store,
never will be. This changes removes a circular dependency between
mongo.py and draft.py.
Move defaults from yaml templates to field definitions.

This standardizes the XModule field default values to be the same as the
values that are presented by studio when a component is added to a
course.

TODO: Make from_xml in descriptors that had defaults changed give the
old defaults for xml courses
No longer persist XModule templates

Instead, we use XModule field default values when creating an empty
XModule. Driven by this use case, we also allow for XModules to be
created in memory without being persisted to the database at all. This
necessitates a change to the Modulestore api, replacing clone_item with
create_draft and save_xmodule.
cleanup xmodule defaults

Fix markdown defaulting logic to be require explicit setting to trigger
simple editor rather than defaulting.
Fix dedent of default xml
Don't override display_name defaults on unit creation
Ensure xml based course problems get the old defaults but new problems
get the new defaults.
Fix tests which assumed the old defaults but didn't use xml for
creating.
Treat about/overview as boilerplate not default about
Sort templates by name (db or get_templates() was doing this before?)
Interesting bug where null as the value of metadata implied reset to
default which screwed up things w/ default markdown
Remove unused and untested parent arg.