Adam/generalized draft import export 2

@dmitchell -- is this the right idea?

https://openedx.atlassian.net/browse/TNL-574
I've been importing the module rather than the methods so that the relationships amongst the annotations is clearer imho, but it's ==. So, in my usages, it's always 
```
@ddt.ddt
class ..
   @ddt.data(..)
   def method(self, *args):
```