Arbitrary Content importing from a directory structure

Resolves #2397 

Summary of changes:
* Converts khanload into contentload
* Adds capability for importing of content from different channels
* Allows global setting of channel through local settings (this could also implement dynamic settings to allow it to be on a per user basis)
* Trawls a directory structure to create a topic tree, reading directories as topics and looking up associated .json files for additional metadata.
* Generates unique ids based on channel name and file md5 checksum.
* Copies content to KA Lite content folder with id as file name + extension
* Creates a new channel specific topic tree, exercise cache, video cache, and content cache
* Fixes sidebar to show content at all levels of hierarchy

Just needs a test to check that the topic_tree generation is solid, but wanted to have it up for review @jamalex and @aronasorman .
If you're not expecting any positional arguments you can change the superclass [from a BaseCommand to a NoArgsCommand](https://docs.djangoproject.com/en/dev/howto/custom-management-commands/#django.core.management.NoArgsCommand)