overlays: base on object

Convert to new-style classes, for python3 migration at some point.
frame: use proper overlay, show editable elements

Move drawing the frame to an overlay object, and make it aware of the mode
stack. If the user is currently editing the frame, draw the adjustable
edges and corners and highlight them if the pointer is near them.

Some minor adjustments to the hit-boxing tests to work better with a
visible frame.

Rationale: makes the operation of FrameEditMode more obvious.

Side effects: frame will no longer be drawn on the preview window. Is this
likely to be an issue? More redraws and calculations within FrameEditMode.
framewindow: rm some commented out stuff
frame: altering the frame now enables frame 1st

One small step to making things more discoverable: user commands which
tweak the frame now make it visible. This addition visibility step is
undoable along with the tweak.
frame: reveal when entering the mode

Show the frame when entering the mode. This includes picking a sensible
size if it doesn't have one yet, so that the user can adjust it
immediately on the canvas.
colorpicker: fix construction

Case issue during construction. Oops.
gui: Use new-style classes everywhere

Newer Python or PyGObject in Arch Linux complaints/warns about
old-style classes.
lib: Allow C++ code in pythontiledsurface
brushlib: Rename MyPaintTiledSurfaceTileRequest, add mipmap level [API]

Now called MyPaintTileRequest. mypaint_tiled_surface_tile_request_init()
becomes mypaint_tile_request_init().
Prepare for more awareness of mipmap levels in brushlib by adding it to tile request.
For now, backends may assume that this level is always 0 when called by libmypaint.
lib: Avoid circular dependency between tiledsurface and pixbufsurface+strokemap
brushlib: Return MyPaintRectangle from mypaint_surface_end_atomic(), not pointer [API]

Returning pointers is always icky; who frees and when.
lib: Const correctness for tile_copy_rgba16_into_rgba16_c
lib: Make more pixops usable from pure C/C++

Separate Python wrappers from the processing code.
doc: Add some notes around performance
options: transitions fix for common ancestries

Fix mode subclasses with a common ancestry which use the same base class
singleton options panel, for example Line mode and Ellipse mode.
Transitions between them weren't updating the label and icon.
tdw: publish viewport updates via an @event

Add a subscribeable lib.observable.event which triggers whenever the
renderer's cached transformation matrix is regenerated.
workspace: make paned contents prettier

Add visible frames implemented as GtkScrolledWindow wrappers for the
sidebar and canvas Paned slots to improve the distinctiveness of these
elements from their flanking toolbar and statusbar.

We now automatically repack the central canvas's widget hierarchy to make
its frame vanish when entering fullscreen mode, and undo the change when
leaving.  Users will want the full extent of the screen when fullscreened.

Using a GtkScrolledWindow and not a GtkFrame for the canvas makes the UI
more consistent (my test themes assign different appearances to frames and
scrolledwindows inside paned). It also raises the possibility of "merely"
exposing a couple of GtkAdjustments on the TiledDrawWidget to allow real
scrolling, at least when MyPaint is not in fullscreen mode.  A somewhat
dynamic system where the visible extents are the actual document bbox plus
one sensibly-sized page might work acceptably (i.e. patches welcome).
message revamp: update usage messages etc.

Shorten and simplify mode usage messages and tooltips.
Fix a hang-over translation context issue.
Fix incorrect fill action tooltip.
linemode: various comment updates
footer mode display: refactor, add icon tooltip

Drop display of the mode's name in text form to save space in the
statusbar.

Make the statusbar mode icon more useful: its tooltip now shows the mode's
name and the related action's tooltip.

Move update responsibilities from gui.document to gui.drawwindow.