Drake function

This implements the "DrakeFunction" idea we'd discussed in #269. I'd like to get feedback about any and all aspects of it, so please, let me know what you think!

This could (probably) be merged in as is without breaking things - everything is contained in the `drakeFunction` package. ~~The only exception is that I had to add the drake root folder to the path in `addpath_drake` in order to get `drakeFunction` on the path.~~

How about putting `iCfun` and `jCvar` as properties of `DrakeFunction`? The default is a dense gradient, and the derived class can set its value in the constructor. Then when we want to get the sparsity pattern (potentially we can call `getSparsityPattern` for many times for the same `DrakeFunction` object), we do not need to do the computation every time. Currently we need to call this function every time we need the sparsity pattern; if the computation of `getSparsityPattern` is complicated in the derived class, this can be inefficient.