Eliminates duplicate Canvas API calls

- A large amount of the changes is moving code chunks from controllers.py to canvas.py
- Some of the code chunks moved has been updated with a few line changes
- Imports updated to reflect changes

Overview: This moves the controller functions that have common calls to the Canvas API into its own class, CanvasModules, now located in canvas.py. As a result of this, we remove duplicate calls to the Canvas API in some of our view function and simplify the parameter set that these controller functions need to take.

@zags 
Some of this logic is also now being done in the `__init__` method.  Might it make more sense to have this method make calls to `list_modules` and `list_module_items` along with the intervention point logic and have `__init__` set `self.modules = self.get_modules_with_items`?  Either way, I think there are ways to reduce some of the duplication.