Removed clang hack for gtkmm warning

The overloaded virtual appears to be fixed in the latest gtkmm.
Added canvas_to_graph(); optimized graph_to_canvas

graph_to_canvas was performing more calculations than necessary;
instead of using scale and translate, we now just figure out the values
directly.

Added canvas_to_graph(), which results in the same thing as
graph_to_canvas() followed by .invert(), but involves considerably
fewer operations.
rtrees now store graph, not canvas, location.

The old code broke if the graph resized: things weren't actually where
the rtree said they were.  A graph resize seems to always happen for the
initial display, which means the graph of the initial state was broken.

The new code stores (invariant) graph locations instead of canvas
locations, but requires translating event points into graph points in
the mouseover/click handlers.

Though this fixes the problem, it also introduces potentially weird
behaviour: the "nearest" point found may now not actually be the
nearest point on the screen, it's the nearest point on the graph.  This
is most pronounced on a highly non-square graph.  Since this isn't very
common, and isn't exactly "broken" it seems like a better alternative
than needing to throw out all the rtrees whenever the graph size
changes.

This also changes the threshold for clicking/mouseover to be "both
dimensions within 5 pixels" instead of "distance within 5 pixels", i.e.
a 10x10 box centered on the element instead of a diameter-10 circle
centered on the element (or a radius-5 circle in L^infinity space
instead of L^2 space).  Calculating the pixel distance is now a bit more
work (involving an extra translation back to canvas space), and it seems
not particularly obvious why a (L2) circle is any better than a square.