possible plot interfaces for functions

This isn't expected to be merged in. Pick and choose if you want, if any seems reasonable. This includes some possible interfaces for the `plot` function when working with function objects. The `Gadfly` package has some similar functionality and it is fairly useful. I added adaptive plotting though that could be improved to handle vertical asymptotes and a very slow implementation of contour plotting.