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 
This lines a bit confusing to me.  Is `database_name` the same as the `name` field of an InterventionPoint?  Is item a module returned from Canvas or an intervention point?  Maybe some comments and/or name change from `database_name` to something else would make this easier to understand.