State.t wasn't being set during creation
Added Reader friendships
Scrolling on the visualization moves through time.
GraphArea visual settings overhaul and enhancement

- Overhauled GraphArea design settings to stop hard-coding everything;
  just about everything can now be updated through changing the
  GraphArea.design struct, which subsumes the old .colours struct.
- Added reader-reader friendship links to graph.
- Got rid of checking for invisibility: not drawing is now explicit via
  design.enabled.ELEMENT
- Renamed drawCircle() to drawGraphCircle(), and added drawCanvasCircle
  that draws a circle on the canvas (as opposed to the graph--i.e. it
  always appears as a circle, even when the canvas is a stretched
  non-square).
- Utility circles are now *canvas* circles instead of *graph* circles
  (since these are just a visual indicator and not actually anything to
  do with graph coordinates).
- Added "utility loss" circles, which work just like the utility gain
  circles, but for the amount utility levels are below 1000.
- Added method to reset the drawing cache (needed when changing
  `.design` elements)
Added number of friends to GUI display elements
Added visualization options to GUI Settings tab.

The visualization gets updated and redrawn immediately when the options
are changed (and cached visualization stages cleared).

The stored R-trees are also affected: they now only contain visible GUI
readers/books, and are recalculated when the setting is changed.  Since
it's also now quite possible to have empty rtrees (i.e. when all of
readers, live books and dead books are disabled), the rtree is now
wrapped in a unique_ptr so as to be able to distinguish between "rtree
not set yet" and "empty rtree"--recalculation is need in the former
case but not the latter.