Improvements to the lookAt() functions

Changed the `lookAt()` functions so they don't overwrite the object matrix. Previously, these functions were using the object matrix for workspace.

Also added quaternion support to `Object3D.applyMatrix()`, plus a little clean-up.