Add transaction for tracking feature edits

As discussed in the weekly dev meetings and [mailing list](https://groups.google.com/d/msg/ol3-dev/rh6pe1-cJm0/NxOzjLWpeIQJ), this proposes an `ol.Transaction` to track newly created, modified, and deleted features.

Proposed `ol.Transaction` API:

 * `setSource(source)` - start listening to add, change, and remove events on the vector source
 * `getInserts()` - get a lookup of all added features
 * `getUpdates()` - get a lookup of all changed features
 * `getDeletes()` - get a lookup of all removed features
 * `rollback()` - remove inserted, revert updated, and re-add deleted features

This is currently a work in progress and is based on the commits in #1282.  Comments welcome.