Eliminates duplicate Canvas API calls

- 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.
- Old tests from test_controller.py moved to test_canvas.py and updated.

@zags