[RFC] New Optimization API

This pull request represents the current _unfinished_ state of my work on a new API for unconstrained optimization in Julia. It implements the ideas described in #16.

There's still another week or so of work to do before this work will be ready for merging, but I wanted to get a demo out there to get early feedback.

It would be good to hear from @andreasnoackjensen about the changes I've made to the backtracking line search function. In my ad hoc testing, I've found that completely removing the loop in which the step-size can increase above `1.0` substantially lowers the number of iterations required to reach convergence. This may be an artifact of the problems I've tried out, but I'd like to make sure that we push as hard as possible on improving the performance of these functions.