Make viewerEntityMixin part of Viewer proper

As discussed in #2315, and part of the larger effort to make data source and entities the de facto top-level API for Cesium, this change deprecates  `viewerEntityMixin` (making it a noop) and folds all of the existing functionality into Viewer itself.

Since it's no longer a mixin, the implementation changed significantly to avoid the abuse of closures and function creation.  The end result is a lot cleaner, in my opinion.  Rather than try to diff Viewer.js, I would review the file whole-hog as if it were new.