ReverseDiffSparse: automatic differentiation with sparse hessians

More automatic differentiation. This version is meant for JuMP but can be used stand-alone. It works with closed-form scalar expressions and can generate sparse Hessian matrices. 

The graph coloring approach used is similar to what's implemented in [ColPack](http://www.cscapes.org/coloringpage/), a C++ library. No license issues since I implemented the algorithm directly from the literature. The graph coloring is conceptually independent from the rest of the code, so it could probably be used in other AD implementations with a bit of refactoring.


@scidom @fredo-dedup @LaurenceA @IainNZ