Add Quaternion template class, all the three template classes can work fine on Qt