Initial commit of functions from github.com/btracey/optimize

The problem is that it's perfectly reasonable to want a ValueInterval of 0. It just means you want the values printed at every iteration no matter how fast they go. However, I don't think that's a reasonable default behavior; it's much nicer to get updates every half second. If you can't make it be completely default, then might as well have a New function and set all of the defaults there (like this one does).