Improve Polygon Triangulation Algorithm

This replaces the O(n^2) ear clipping algorithm with an O(nlogn) random
cut algorithm.
Follow JSHint coding standards
Use DeveloperError instead of throwing object
A bit of refactoring

- Added changes to CHANGES.md
- Renamed earClip2D to triangulate
- Changed applicable new methods to be private
A few more fixes

- Changed tests to use "triangulat"e instead of "earClip2D"
- Added a test case compliments of @hpinkos
- Made sure that intersection testing tests from first to last vertex
- Fixed the case of polygons that have a side that intersects with a
  vertex and added test case (algorithm now prunes unnecessary in-line
  triangle that is created)
Always another corner case...

- Deals with cut validation corner cases (see comments)