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!
Improve debugging some more

Looks like we'll need the source as well to distinguish some multi-faceted
devices, i.e. tablets sporting touchpads, pad buttons, or eraser pens in
addition to pen input, all of which which present as separate devices.

Quite a lot of non-Wacom tablets present all of these devices under the
same name when used with the evdev driver.  See the output people have
reported in #29.

Getting the references we store right will be important for preferences
driven inclusion or exclusion of devices, bug #40.
Forbid zero-pressure events if a button is down

Devices using the Linux evdev driver sometimes report zero pressure for an
axis when the value hasn't changed since the last reading. This results in
seemingly random breaks in what should be smooth brushstrokes. This
behaviour is common with Monoprice, Genius, or other UC-Logic based
tablets, which typically only have pressure inputs. Tilt inputs suffer from
this too, for Wacom devices using evdev.

Attempt to fix this by reusing the last good reading for the axes in
question if a button is held down when we receive a zero reading. For
pressure this should be fine in all cases. For tilt we may be discarding
valid readings, but who holds their pen exactly vertical anyway?

This may or may not fix the problem; earlier reports show spurious button
presses at the times when the pressure hits zero (but it's difficult to
read someone else's "xinput test" trace!)

This initial attempt at a fix depends on there being no spurious button
presses or releases at the same time as the input dropping to zero or
resuming.

Addresses #29, but perhaps not for every tablet (please test!)
Added a generated file to .gitignore

desktop/mypaint-ora-thumbnailer is generated from
desktop/mypaint-ora-thumbnailer.py so changes to it shouldn't be done
directly.
Merge pull request #44 from iirelu/gitignore-edit

Added desktop/mypaint-ora-thumbnailer to .gitignore
Add Kaerhon Brush Pack v1

Kindly contributed as CC0 by Guillaume Loussarévian. Many thanks!

http://kaerhon.deviantart.com/art/Kaerhon-Brush-Pack-v1-for-Mypaint-1-1-378138104
Submodule bump, wider libjson[-c] version compat

Brushlib now supports older libjson/libjson-c across that lib's rename.
Bump the submodule, and update README.
Tidy up brush editor & fix exception

Newer Glade versions insist on writing internal child widgets for scale
buttons that older GTK and GtkBuilder versions don't support, even when the
Builder XML file's <requires/> field is set correctly.

Fix the resultant exception by manually deleting the plus_button and
minus_button internal children of the two (repeated, templated)
ScaleButtons we use.  We'll just have to be careful about doing that for a
few versions.

Fixes #46.

Also, a general and long-needed UI tidy-up for the brush editor:

* Symbolic icons for X-axis scale editors (still unintuitive though...)
* Put the scale editors at the outside & reduce margins a bit
* Use Gtk.ShadowType.IN for the main edit area - nicer for Ubuntu
* Silly padding widgets for where we had placeholders (Glade convenience)
Added Two Symbolic Icons and Added Info to Icon Extract Script

Added two new symbolic icons to "desktop/icons/hicolor/scalable/actions/
	-mypaint-close-tab-symbolic.svg
	-mypaint-tab-options.svg
Added Useage txt to "svg/symbolic-icons-extract.py" script to lessen confusion
Lastly, symbolic-icons.svgz has the two new icons mentioned earlier under Actions

Fixes #17
Revised Icons and Coded them In

  -Removed the Previous Symbolic Icons and added new Wrench Symbolic
Icon in Desktop/.../actions/ folder
  -Added "icon_name" perameter in def buttonless_button in
gui/widget.py
  -Coded the Symbolic icons in gui/workspace.py
  -Added Wrench Icon under Actions
  -Moved Rejected Symbolic Icons on the outside of
svg/symbolic-icons.svgz
Update README, convert to Markdown

More comprehensive and better-formatted main README.md, with begging slots
for Windows docs.
README.md: extra github flavour

Correct misformatting.
Fix build when using clang on Linux

The build environment was assuming gcc on the "linux2" platform, or at
least it was using "-z origin" when the linker was being invoked via clang
wrappers. Replaced with passthru variant for better portability.

We should be testing this to help OSX users and porters (see #49). The
current way of compiling with a nonstandard compiler is via the standard
environment vars CC and CXX:

   $ CC=clang CXX=clang++ scons

Builds with clang 3.4 and gcc 4.9.0 under Debian testing/unstable.
Better handling of optimization flags for lib/

Rethink the way scons should reinstate -O0 if compiling with debug=1.
Trying to be clever with CCFLAGS was causing problems: see #52.