Using CONSTANT_CASE for geometry type
Using PascalCase for geometry enum values

This adds a bit more inconsistency to the library, but we didn't have complete consistency before.  Almost all existing string enum values are lowercase (a couple are camelCase and one is dash-separated).  The closure library isn't consistent either (with case for enum properties or values).  I imagine this could be justified in saying someone could blindly use GeoJSON type values in places, but in the end, you'll need to read the docs before guessing right.
This commit serves no purpose other than helping minimize a diff
Marking the geometry type enum as stable
Add ol.MapBrowserEvent#getBrowserEvent
Remove original handling on ol.Feature

This is another attempt to bring master closer to the
vector-api branch. In anticipation of the ability to keep track
of modifications on ol.Object through a beforechange event
(d7e4be0), we will be able to manage originals on the
application level or in a separate component outside of
ol.Feature.
Merge pull request #1347 from ahocevar/no-original

Remove original handling on ol.Feature
Merge pull request #1335 from tschaub/geometry-type

Change geometry type enum and mark as stable.
Avoid firing duplicate change events in ol.layer.Layer
No need for handleLayerChange in base layer
Avoid duplicate change event on visibility change
Remove unused handleLayerVisibleChange
Test change events on layer groups
Merge pull request #1349 from tschaub/fewer-change-events

Clean up layer change event handling.
Add beforechange event type and provide key with change events

If you know ahead of time that you only want to listen for changes for a specific property, the foo:change type events can be useful.  If you want to listen for changes on all properties, the change event becomes more useful if it provides information on what changed.  And the beforechange event allows listeners to access values before they change.
Handle beforechange events for bound properties
Getting explicit about which type
Listen for property changes in layer group

This avoids a future bug when the ol.ObjectEventType.CHANGE value becomes something different than the goog.events.EventType.CHANGE value.
Using unique event type values for distinct events

Any event target can be used to dispatch generic goog.events.Event instances with an arbitrary type.  In cases where we dispatch custom events, we should not use type values that collide with those used for generic events (at least internally).  This allows listeners a better chance of knowing what kind of argument they will receive.

As subsequent change will clean up the enumeration and add a bit more consistency.
Make enum property name like its value

Where an enum value is used as an event type, it should be alllowercase (to follow DOM events).  Property names should be ALLUPPERCASE in this case (just as camelCase and PascalCase are converted to CONSTANT_CASE).