Added and tested first version of gram polynomial method

Orthogonal Gram polynomials are an alternate and cleaner method
of calculating the coefficients.

This method is still not incorporated into the public API
Unified interface for both the Gram poly and matrix method

All tests pass.