Support double precision quaternions.

Adds the types quatf_t and quatd_t for single and double precision quaternions
respectively. Removes quaterion_t type and renames all quaternion functions.