editor: use QLineEdit instead of hand-rolling one

We're editing a line of text, so it makes sense to use a QLineEdit
instead of hacking in editing into the control ourselves. This
gives the users a few neat extra-features, like copy-paste and
undo/redo on the editing itself, yay!

Work around QTBUG-4045, by stripping away group-separators.
editor: factor out left-margin painting
editor: factor out interpolation-pen selection
editor: simplify painting
editor: use QRect for selection
editor: move document-implementation into source file
editor: store everything needed in undo-commands
editor: use Qt's undo framework

Instead of hand-rolling our own systen, let's use Qt's built-in
one to reduce the amount of code.
editor: selection-helper
editor: hide undo-stack
editor: use getTrackFromX helper

Instead of sprinkling the knowledge of what apears where aound in
the code, let's use a helper instead. This way, we can more easily
change widths of single tracks.
editor: do not track width/height of TrackArea

We can ask the viewport about it instead.
editor: do not track windowTracks
editor: make invalidateTrack invalidate track-names

Previously, invalidateTrack only invalidated the track-data, but
this isn't correct. Some other invalidation seems to have kept
this problem under control, but this is about to change...
editor: per-pixel horizontal scrolling

This feels a bit nicer.
editor: separate between logical and physical coordinates