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.~~

Yes. The sparsity pattern should be right. I should have some tests on the
sparsity patterns though.
On Aug 24, 2014 6:28 PM, "RussTedrake" <notifications@github.com> wrote:

> In solvers/+drakeFunction/DrakeFunction.m:
>
> > +      end
> > +      fcn = drakeFunction.Concatenated(fcns,same_input);
> > +    end
> > +
> > +    function fcn3 = compose(fcn1, fcn2)
> > +      fcn3 = drakeFunction.Composed(fcn1,fcn2);
> > +    end
> > +
> > +    function fcn = duplicate(obj,n)
> > +      % fcn = duplicate(obj,n) returns a concatenated DrakeFunction containing
> > +      % n duplicates of obj
> > +      more_obj = repmat({obj},1,n-1);
> > +      fcn = concatenate(obj,more_obj{:});
> > +    end
> > +
> > +    function fcn = addInputFrame(obj,frame,append)
>
> i see this now, and it looks like what I wanted from our email exchange.
> (i assume that using the drakeFunction.Zeros set the sparsity pattern
> correctly?)
>
> but I do think that, more generally, we should support an inFrame method
> which searches for a transform and applies it (if that transform is
> stateless).
>
> —
> Reply to this email directly or view it on GitHub
> <https://github.com/RobotLocomotion/drake/pull/341/files#r16638393>.
>