Begin implementing Interpolate trait 

As part of #4819, this commit adds an `Interpolate` trait to `std::num` and implements it for `float`, `f64` and `f32`. At the moment it only covers linear interpolation, but @jensnockert plans to flesh it out with other methods.

~~~rust
pub trait Interpolate {
    fn lerp(&self, other: &Self, value: &Self) -> Self;
}
~~~

In addition I also altered the `connect` method impls to use vector destructuring.