Using rectangle instead of FL_ROUNDED_BOX which was horribly slow.
Single draw for selected notes using fl_color_average to highlight it.
Update area and other canvas drawing optimizations:
Canvas::handle_event_change modified to accept grid update area.
Canvas::draw_clip now uses current NTK clip rather than taking arguments.
Canvas::draw_clip breaks out of bar/beat draw loop when past end of grid.
Canvas::draw_clip code cleanup.
Canvas::draw now only draws mapping or ruler as needed.
Don't damage all on focus/unfocus events.
Disabled extra damage calls at end of Canvas::handle.
Grid now passes an area with signal_events_change and queues up to 2 event change updates.
Added Grid::unlock_no_undo to not store undo state (for selection operations for example).
Added Grid::change_update and change_update_all to queue event change updates.
Added Grid::do_change_updates() to signal queued change update events.
Merged Grid::_delete with Grid::del.
Many Grid methods optimized to use update area and other optimizations.
Fixed scroll corruption bug caused by improper update of _old_scroll_x and _old_scroll_y.
Fixed bug in duration note drag where a duration of 1 could often not be set.
Fixed typo in Grid::move where ny was used instead of nx for note start.
All Grid selection methods don't store undo state (fixes bug which required multiple user undos unexpectedly).