Add JSON encoder for datetimes to xml export

During policy export, we want to write any python datetime objects found
as iso timestamps, rather than throwing exceptions.
WIP: Use approximate comparison when checking for changes to start dates
Remove extraneous test for already handled edge case
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.
Add serial commas to modulestore definitions
Remove traling commas to make json valid
WIP: Move defaults from yaml templates to field definitions.

TODO: Make namespace fields point at original class definitions
Remove noop if statement
Customtags can't be inserted by studio
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.
Minor pylint/whitespace changes
Force locations to be Location objects earlier
Make url matching regex flexible to allow for browsers that munged :// into :/
WIP: To be separated