Drake gradient util

Pull request for C++ gradient utilities. I put general purpose functions like {get,set}SubMatrixGradient, transposeGrad, etc. in drakeGradientUtil, and functions that compute gradients of geometrical things in drakeGeometryUtil.
Do you have an opinion on these constants in terms of placement and name formatting? This is the way Eigen does e.g. Eigen::Dynamic. I didn't want to have magic numbers everywhere. There's some I can get rid of still once we've decided whether having these here is the right way to go.