Various Math improvements from Clara.io

The changes PR'ed here to the Three.JS math library are additions we made based on our extensive usage in https://Clara.io

Summary:
- make/extractBasis on Matrix4.  Details: https://en.wikipedia.org/wiki/Basis_(linear_algebra)
- Matrix4.makeShear.  Details: https://en.wikipedia.org/wiki/Shear_matrix
- Euler.toVector3()/setFromVector3.  Useful for Vector3/Euler interop, which is a fairly common use case.
- Quaternion.add/sub/multiplyScalar.  Useful if you want to do math with quaternions.
- Matrix4 type checking on functions that could possibly take Matrix3.  This actually caught real errors in our Clara.io code base, so we are contributing these checks back.

Couldn't we just use one style and use `.transpose()` in your code if it needs to be reversed?