all tasks are generic and have steps

also, exercise step has a content JSON key.

This depends on #3 but **this PR** should be merged first

Example Task:

```json
{ "id": 3,
  "title": "Exercise Task",
  "steps": [{
    "type": "exercise",
    "content": {
      "background":"This exercise has many parts. Each one is a different type of question. Einstein makes a 10 kg spaceship",
      "parts":[
        {
          "background":"The spaceship moves at <span data-math='\\dfrac{-b \\pm \\sqrt{b^2 - 4ac}}{2a}'></span> 1 m/s",
          "questions":[
            {
              "id": "123",
              "format": "short-answer",
              "stem":"What is the rest mass in kg?"
            },{
              "id": "234",
              "format": "multiple-choice",
              "stem":"What is the force if it slams into a wall?",
              "answers":[
                {"id":"id1","value":"10","content":"10 N"},
                {"id":"id2","value":"1","content":"1 N"}
              ]
            }
          ]
        }
      ]
    }
  }]
}
```
I'm not sure that the other fields are necessary (yet) since they are either provided by the client in the GET request or can be easily calculated.

- `current_page` is provided in the GET as `&page=3`
- `count_per_page` is provided in the GET as `&per_page=10`
- `total_pages` is `Math.ceil(total_items / count_per_page)`