Pmitros/import export cleanup

@cdodge @dmitchell  This fixes a number of issues with import/export: 
1) We properly escape course names. This prevents collisions if two courses have similar names with dashes
2) We modularized the code, slightly. The web file download code is now pulled out slightly from the course import code which handles a tar import. Lots of improvements still remain (make web file download generic, eliminate breakdown between data_root and course_subdir). 
3) We don't trust user input for setting filenames on file system. The downloaded file now has a name set by the code. 
4) We support import directly from github. 

Next useful step would be to improve test coverage. In particular, the tests ought to try to make sure that courses actually import correctly (rather than just that there are no 500 errors).