Basic provisions for numerical functions

Implemented the ability to provide numpy (or similar) functions, and have the
objectve, gradient of objective (via. finite differencing), and constraint
functions properly include the external function. Still need to write function
for Jacobian of constraints and include external functions there.

Using finite differencing code for numerical differentiation of external
functions, calculating optimal step size automatically. Requires more function
evals than desirable, but should have high accuracy.