Adam/generalized draft import export 2

@dmitchell -- is this the right idea?

https://openedx.atlassian.net/browse/TNL-574
My last push got rid of @cahrens 's last comment. I was afraid that would happen, so luckily I copied it before I pushed:

"""
Get rid of DIRECT_ONLY_CATEGORIES call here. It ties this code to the whole draft/published notion, it pulls DIRECT_ONLY_CATEGORIES into yet another place in the code, and IMO the performance improvement it gives is not worth the confusion and complexity (since this method will only be called with draft module_nodes, and therefore we are guaranteed that any module_node with a location in DIRECT_ONLY_CATEGORIES will not be passed into this method). AND it allows you to get rid of the use_locations variable! AND module_node no longer needs to contain the parent_location (at least for the purposes of this method... maybe it is needed elsewhere).

@dmitchell, @adampalay is nervous about the potential performance hit of removing this shortcut, which just prevents seeing if an element is present in an array. What do you think?
"""