No need to keep kkrev, since it may be computed on the fly

Global memory IO is much more expensive than arithmetic operations.
Optimize Chebyshev construction

Again, there is no need to store intermediate values to global memory
when those could be computed on the fly.

Also replaced boost::math::constants::pi with vex::constants::pi