added pagination mixin, separated abstract view from controller

Hi Roman,

When you get a chance could you look at this? I'm sure it will need tweaks before it is accepted.

 I made a lot of changes, most of which are pretty straightforward, but I completely changed the way the paginated widgets work, given that we aren't using the infinite scroll approach anymore, and I would like to get some feedback as to whether I did it correctly.

Changes:
- added an optional loading overlay function for widgets into the base widget
- added a master page manager with tests that keeps track of what is in the dom and auto-scrolls when pages change
- added pagination to the list widgets through a mixin that keeps track of the indexes of records given the start value (list of things widget and the widgets that inherit from it still needs tests, but the new pagination mixin has tests)
- improved css layout on abstract page 
- fixed random bugs, e.g. the citations graph issue, the fixed search bar at the top causing scroll issues
everything here and below will need unittest (btw: the list-of-things-widget.spec.js is uncommented)

you should start by writing all the cases (into the test) and implement the logic; for example:

offset=0  (paginate right)
offset=30 (paginate left,right)
offset=500 (numFound=500, paginate left)
offset=30 (jump to first; jump to last)