Interpolation code

Implements

 - Linear
 - Cosine
 - Smooth (Based on Smooth Step)
 - Barycentric
 - Hermite
 - Cubic
 - Catmull-Rom

They are implemented using Horner's rule, which should be the fastest
assuming that we cannot get any parallelism. At some later date we can
see if we could optimize them for super-scalar processors.

TODO: Add documentation, tests and make the implementation generic.