Add specialization to Quaternion[A].
Add specialization to Quaternion[A].

This commit should complete the effort to generify Quaternion. The type
is now specialized on Float, and Double, and should correctly use ===
in all applicable cases.

The only serious issue remaining is the lack of signum.

One difference between Complex[A] and Quaternion[A] right now is that
Complex uses the faster, but less precise polar operations for both pow
and fpow. Right now, Quaternion has a precise, recursive pow
implementation which is a bit slower, but won't introduce any error.
I'm not sure whether Complex should adopt Quaternion's strategy or
vice-versa.

AlecZorab/spire,kevinmeredith/spire,woparry/spire,AlecZorab/spire,JackSullivan/spire,codeaudit/spire,non/spire,adampingel/spire,rklaehn/spire,siddhartha-gadgil/spire,adampingel/spire,JackSullivan/spire,non/spire,guersam/spire,rklaehn/spire,kevinmeredith/spire,siddhartha-gadgil/spire,codeaudit/spire,guersam/spire,tixxit/spire,tixxit/spire,woparry/spire