Tasks with basic-return-no-results Task query API

This PR adds some of the task-related models as well as an `/api/users/tasks` endpoint.  This endpoint actually does call code to query retrieve Tasks and render them to JSON, but so far I've only tested the case where no Tasks are expected to be returned.  

I know that there are some chunks of commented code in this PR as well as a fair number of "pending" specs.  I want to leave the commented code in until I write the tests and can verify that I don't actually need that code any longer.  

@Dantemss to do the review -- once merged, @philschatz should be able to use the API to display no tasks (tho @philschatz should note that the results returned from `/api/users/tasks` are more complex than just a simple array -- I'll send the docs; also I just realized that `users` is plural here (not `/api/user/tasks` -- if we want this form @Dantemss can remind me how to do that).
Well as you have it right now group work is like this:

- Everyone has separate Tasks
- 1 person submits
- Some magic happens (Manual TA sorting?)
- Everyone gets graded on what the 1 person submitted

With a join table:

- Each group shares 1 Task object
- Everyone can work on it (downside: accidentally deleting stuff or submitting prematurely)
- It's clear what should be graded