Initial commit
Add initial implementation with ::setTextInRange
Add ::getTextInRange
Add ::clipPosition and ::clipRange
Add ::offsetForPosition
Add ::positionForOffset
Add basic undo/redo support
Support non-reentrant transactions
Still clear the redo stack when pushing onto a transaction
Abort the transaction if ::undo is called in the middle
Don't push empty transactions to the undo stack
Allow transactions to be nested
Add ::transact, which runs the given function in a transaction
Emit a 'changed' event when the buffer is changed
Add ::freeze to Range and Point
Add optional boolean `copy` param to Range.fromObject

If `copy` is true, we create a copy of the object if it is already a
range.
Start on markers. Add ::markRange method.
Add ::markPosition
Add Marker::getState
Add Marker::getInvalidationStrategy