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

The Wolfe conditions are different from the Armijio ones. They aren't incompatible, but it's not fully consistent.