Update our data model so it contains multiple pages of data

As we go back a page, we load in the previous 10 blocks into an array
which we prepend to our existing data. Each page of 10 hashes is stored in
an array, and the arrays are stored within our model. I've now added
implementations for the next and previous functions within our block list
controller.
Adds e2e test that our block list is populated
Updates the data model to use promises rather than recursive asynchronous calls

This should hopefully make the code clearer and easier to read.
Fixes and extends the unit tests for the controllers

A couple of hurdles to overcome here, namely mocking out the data model and
mocking promises. Adds unit tests for the data model service.