Lines and Curves: fix pressure curve error

An exception was being raised when manipulating the pressure curve
in the options panel for the Lines and Curves tool.

Fixes #33.
Submodule bump + add options

Update to "support" use_sharedlib and use_glib for the updated brushlib,
although building brushlib as shared currently breaks installs and local
tests. So don't do that (for now).
Build: add help output

Now running with `scons -h` will reveal options.
Improve rendering speed test

* Add fps measure
  - for comparison only, it's not application fps
  - relates only to blits into an offscreen surface sans. accel.
* Improve commenting
* Drop 5x-radius scroll test @ 100%
  - all it was doing was rendering empty space (oops)
* More test cases
* Better test naming

Addresses #21
display rendering: use a LRU cache

Rendering for the display involves a fix15 → 8bpp transformation after
generating each fix15 tile. Tile generation is a moderately expensive
operation compared to conversion, so cache that fix15 data in RAM using a
cache with an LRU metric.

The ideal maximum capacity for the cache remains to be determined, but 32
or 64 MiB has a nice feel, and shouldn't cause modern systems any trouble.

Addresses mypaint/mypaint#21.
Fix incorrect OpenMP variable privacy

Correct a broken OpenMP private() declaration for instantiations of the
unspecialized BufferCombineFunc<> template.

Bug was made apparent only in bb8e660 and was only evident when MyPaint was
built with -O0, which that commit introduces for debug=1.  Visible with
tests/test_compositing.py.
Rendering tests: add some more cases

Add test cases for rendering with mask layers, and without backgrounds.
Pixel ops: deparallelize, _c()ify the rgba one

Using OpenMP was the wrong approach for 16→8bit conversion as written. Big
slowdown, not sure why (false sharing, maybe?); removed. Addresses #21.

Migrate guts of tile_convert_rgba16_to_rgba8() to a private C++-only
function, to make comparisons with its rgbu sibling simpler.
Work in premult alpha for more modes

Add partial specializations which operate on arrays with premultiplied data
directly for the following combinations:

* Source Over (for the DSTALPHA=true variant as well)
* Destination In (both variants)
* Destination Out (both variants)

Using svg:src-over onto an alpha backdrop within the UI is becoming more
common (masks, Show Background toggle, Pass-through layer groups).  It
makes sense to have this code path work more efficiently.

Addresses issue #21 a bit as well: doing this gets a couple of extra fps
for both the scroll_1x_lazy_all_onscreen_masks and the
scroll_1x_lazy_all_onscreen_nobg test cases. To me it's noticeable in the
app too, if still a bit laggy.

Verified we can use the same template for src-over without penalty to the
no-alpha case, at least on the compiler I use.
Make "Normal" the default mode for groups

The default mode for groups should be Normal rather than Pass-through.
Pass-through is a bad default for new groups. It's:

* More limiting to the user because its opacity cannot be changed.
* Not called "Normal", which users might justifiably expect! ☺
* Not like what GIMP and Krita do.

Fixes #15.
Simplified the functionality of eraser mode

It now no longer changes size by itself. This is more of the nuclear
option than anything, as a lot of brushes DO need to have their size
changed to work well as an eraser, but the previous code was so
user-hostile and counter-intuitive that it was best to entirely remove
it.
Tidy some dead code and unused vars

Removed some dead code and unused vars after the removal of the eraser mode
radius ratio stuff.
Forbid Merge Down if either layer is locked

Locking layers should mean that their contents can't be changed, and the
Merge Down code correctly raises an assertion when it detects this
condition. However the layers should be greyed out too. Fix the resultant
exception by indicating in the query that locked layers cannot be sources
or targets for Merge Down.

Fixes #38.
Support fake, hopefully faster, checkerboard bgs

Optimizing the part of the rendering path involving rendering RGBA data
with A<1 is proving intractable. "RGBU" (i.e. RGBA with A=1) is noticeably
faster. Therefore use the tile rendering phase to fake a checkerboard
background.

New setting: "Prefs → View → Zoom → Use a real checkerboard pattern".
The faked kind is a little ugly, and is prone to dithering artefacts. Also
its appearance changes with the mipmap level, which looks odd. Therefore
it's off by default.

Addresses #21 by trading a little raw performance for hopefully much less
lag when a fake transparency checkerboard background is turned on. CPU use
for 1:1 zoom + a single destination-in layer on my system drops from 160%
to 120%.
Fix modifiers+space binding

GdkEventKey.is_modifier isn't useful any more in GTK3.12 with introspected
bindings, so use a more explicit test for modifiers being held down.

Fixes #24
Re-enter current mode when entering fullscreen

When entering fullscreen mode, leave() and then immediately enter() the top
mode on the stack. This allows modes like freehand to reestablish any hacks
or workarounds they need which get reset or perturbed by state changes at
the Gdk window level.

Fixes #39.
More device debugging at startup

* List all axes found
* Be explicit about devices which get skipped
* Log a warning if there are no devices with >1 axes
  - Gdk reports all non-"fancy" devices' axes as Gdk.AxisUse.IGNORE now :(
  - Mice and touchpads aren't fancy enough, seemingly
  - Don't know yet if tablets that have problems do this (see #29)
  - Let's find out!
Merge pull request #1 from mypaint/master

Update to Upstream