Improvements to Gaussian Process models

This includes a variety of changes to improve support for Gaussian Processes in Stan.  Included are:

- quad_form(A,B) function which implements B'*A*B
- trace_quad_form(A,B) function which implements trace(B'*A*B)
- trace_gen_quad_form(D,A,B) function which implements trace(D*B'*A*B)
- Optimizations of implementation of mutli_gp_log
- Implementaiton of matrix_normal_prec_log to support the Matrix Normal distribution parameterized with the inverse matrix.
- The inverse_spd changes of issue #55

There are unit tests for the new functions and distributions.