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

Is your code above an example of what you mean by flags, or do you want something like FlagNoEvaluation?

In the future, it is likely we will have HessianOnly, and FunctionGradientAndHessian. Does this change your mind on the "|" construction?