Squashed commit of the following:
    CppAD: Apply changeset_3372.diff
    - More CSkipOp related fixes
    CppAD: Apply changeset_3370.diff
    - CSkipOp related bug fixes
    CppAD: Apply changeset_3367.diff
    - Fix optimize user atomic function
    CppAD: Apply changeset_3359.diff
    - Fix invalid optimization of discrete operator (DisOp)
Atomic matrix exponential
Eliminate nan gradients caused by code not affecting the likelihood