Command patter for buffer.
Implements line splitting, merging, undo stack (undo not supported since selections are not stable)
Merge SelectionBuffer into Buffer, the separation wasn't worth it.