Finish implementation of Cartesian4

1. All prototype functions now have static equivalents.
2. All functions now do proper error checking.
3. All functions no longer require Cartesian4 instances and instead will work with any object that has an x, y, z, and w properties.
4. All functions that produce a Cartesian4 now take an optional result parameter.
5. Code coverage for Cartesian4 is now 100%
6. Remove Math.angleBetween because it already exists on the Cartesian functions.

These changes are related to issues #71, #84, #86 (those issues will remain open until we address them for every Core type).
Merge branch 'master' into cartesian4
Replace === with toBe and toNotBe. Fix comment typo.
Update CHANGES.
Fix copy and paste error in documentation.
Merge pull request #108 from AnalyticalGraphicsInc/cartesian4

Finish implementation of Cartesian4
Remove Cartographic2, clean up Cartographic3

1. Cartographic3 now has static versions of it's prototype methods.
2. Cartographic3 methods now work on object literals that expose longitude/latitude/height properties.
3. Cartographic3 now has proper error handling and full test coverage.
Rename Cartographic3 to Cartographic and CzmlCartographic3 to CzmlCartographic.
More Cartographic cleanup

1. Remove all usage of creating Cartographic instances using degrees as internal representation, Cartographics are always represented as radians.
2. Add fromDegrees helper function to aid in creating Cartographics from degrees.
3. Reaname toCartesian(s) and toCartographic(s) methods to cartesianToCartographic/cartesianArrayToCartographicArray and cartographicToCartesian and cartographicArrayToCartesianArray respectively.
4. Fix comment in Quaternion.fromAxisAngle to specify the correct unit.
Clean up some documentation and replace some Cartographic construction code with new helper function.
Update CHANGES.
Tweaked CHANGES.md
Fix order of parameters in comment.
Merge pull request #109 from AnalyticalGraphicsInc/cartographic

Cartographic cleanup.
Renames for consistency

Rather than do these renames as part of the other refactoring going on, I thought it was easier to just do it in a seperate pull so that other requests aren't so noisy.  This was a simple find/replace, no other changes were made.

1. multiplyWithMatrix -> multiply
2. All functions starting with multiplyWith now start with multiplyBy, this makes it consistent with divideBy functions.
Merge pull request #110 from AnalyticalGraphicsInc/multiplyBy

Renames for consistency
Finish up Matrix2 implementation.

Matrix2 now has
1. proper error checking.
2. static versions of all prototype functions.
3. functions that work on any object with a values property.
4. functions that provide an optional result parameter for object re-use.
5. equivalent methods to Matrix3 where they make sense (multiplicate/negate/transpose/etc..)
6. 100% code coverage
7. Complete documentation.

I also found a pervasive copy and paste error in the documentation for previous classes I refactored where <code> tags weren't being close properly.  This is now fixed.
Merge branch 'master' into matrix2
Add default value for Matrix2 constructor parameter.
Add a helper function defaultValue for concise handling of defaults.

Use the helper in a few places, more can be converted over time.  Also some clean up and documentation fixes.