Adam/generalized draft import export 2

@dmitchell -- is this the right idea?

https://openedx.atlassian.net/browse/TNL-574
I'll update the documentation to make this more clear:
```
    Takes a list of module_nodes, which are namedtuples that have identifiers
    for themselves and for their parent. A list of module_nodes, therefore,
    may describe one or several trees. For a given list of module_nodes,
    this generator yields the root of every such tree described by that list.

    `use_locations` is a kwarg that specifies if the module_nodes provided
    have a non-None `parent_location` attribute.
```