Added fplot to Axes subclass.

Plotting functionality for Python callables, ala Matlab's 'fplot'
function.

An adaptive step-size is used. Smaller step sizes are used when the
gradient of the function is larger.

Only one callable is supported so far, it would be desirable to support
an array/list of callables and plot them all simultaneously.

There are some unresolved problems. One is the inability to deal with
the scenario when f(x) is undefined for some x.
Add a demo.
Add interactivity

This commit adds fplot to the pyplot module.  It also contains the necessary
event hooks to make the interactivity work.  It's a little slow right now so
I'm going to work on some optimisations to make the interactivity smoother.
Huge performance improvements

It's much smoother to retain a certain resolution within the view limits.  This
means that refinement is not done adaptively, and the resolution is fixed.

Next step is to try to keep the number of points with which to partition
the domain fixed, and move the points around to areas that need it.
Much better singularity processing

It is still the case that no refinement is done, only adaptively moving the
x-coordinates is done.
PEP8 foo