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 
Yes, `database_name` is meant to clearly indicate it's the `name` field found in the database. `Item` here is from Canvas, as in the sense of module items. The point of this line is that since users can rename intervention points to display something else in Canvas, we should display to the user both the name internal to the tool and the name displayed on Canvas (i.e. the field `title` returned by the Canvas API)