Use `Float` for trait bounds instead of `Real + ApproxEq<S>`
Copy quaternion method impls over from src-old, and add conversion traits