Maintain an append-only list of changes in Buffer
LineChangeWatcher uses Buffer::changes_since rather than listening
Pass a at_end param to BufferChangeListener::on_{insert,erase}
Use a Buffer::changes_since based implementation for undo/redo
negative coordinates are invalid
SelectionList know its buffer and timestamp
Use simple SelectionList for the Context::JumpList
Make it harder to have an invalid SelectionList
use plain SelectionList for regex_prompt
utf8::is_character_start takes directly the char value
Use a plain SelectionList for Context, remove DynamicSelectionList
Remove BufferChangeListener
Iterate in reversed order on selections when modifing buffer

This way, update only needs to be called once everything is done
as we always modify after the next selection to be used.
Remove unneeded vector for computing line modifications
replace LineChangeWatcher with a free function compute_line_modifications
Fix gdb pretty printer
Merge branch 'master' into remove-buffer-change-listener

Conflicts:
	src/highlighters.cc
Minor cleanup in SelectionList methods
Remove per lines timestamp in Buffer
Remove duplicated logic and fix insert in Replace mode