Issue #3399

Didn't quite get this right.  Note that all of the loops are exactly the same... they only differ by what they store into and what enum you pass in to the compute function.

At the top of this function get a `DenseMatrix<Number> &` reference and a reference to the `test` functions and a reference to the `phi` based on `type` then store into it by calling `computeQpJacobian(type)`.

You should only need _one_ loop.... not 4.