Reimplement ApproxEq that has been removed from the standard library

ApproxEq was removed from std::cmp, so If we still want approx_eq then this PR has it all implemented. Also, it makes cgmath-rs compile at last, and pass all tests.
I don't like the fact that now most trait bounds like "T: Float" became "T: Float + ApproxEq<T>", which is more verbose.
Please evaluate the change and let me know what you think.