Refined Two Symbolic Icons and Patched Export Script

Refined the mypaint-tab-options, and the mypaint-fill symbolic icons to
help the wrench flow with the theme, and the paint bucket look a bit
better(it the small things).

Also, it was getting anoying that one had to close Inkscape in order to
finish the symbolic icon export. So adding a --verb=FileQuit command did
the trick to close inkscape when it was finished.

Lastly, notice that for some of the symbolic icons, the export script
did not remove the bounding box of the icon. Fixed by adding a loop
to looked for something that was common between the bounding boxes
which they all start with "use". Simple Band-Aid fix, but I plan to open
and issue about an alternate method on how to export the symbolic icons.
Refactor Brushmanager init; bugfix

* Break up the unwieldy groups initialization into separate methods
* Typos, documentation
* Fix exception when a brush to be loaded is inaccessible
* Improve logging a bit
SCons: better default prefix; improve help

* Use /usr/local even on Darwin to avoid clashes with Macports.
* Remove hardcoded default strings: --help does this for us more prettily.
* Correct typo.

Fixes #60.
Submodule bump to fix M_PI macro redefinition

Fixes #53.
Added lib/mypaintlib_wrap.cpp to .gitignore

Another generated file, this time from swig, apparently.
Brushlib: submodule bump

Various bits of tidyup code.
Refactor mode hierarchy

Apply a few simplifications and improvements to the mode class hierarchy
that have been pending for a while:

* Use ALL_CAPS for "const"s,
* Split concrete mode classes out of the base class module,
* Rename gui.canvasevent -> gui.mode.
* Registry: build list of registered mode classes to simplify refactoring.
* Remove spring-loaded mixin
  - All concrete spring-loaded mode classes were also DragModes and vv.
  - Push the behaviour down into the DragMode class
* All oneshot modes are drags, merge mixin into OneshotDragMode
Device monitor: break out & enhance a bit

* Move device monitoring out into a separate file.
* Make device mode-setting nominally configurable via prefs (no UI yet)
* Device mode setting now responds to more triggers than just app startup
  - plugging
  - first use of a device (fallback)
External editing for layer content

Add UI and layer APIs to support editing layers via tempfiles, using
external applications. Currently only the default application for a given
file type can be launched, and only file-backed layers (e.g. VectorLayers)
can be edited this way (they benefit most).

Addresses #57.
Add API for flashing transient messages

Using the statusbar only for now, but there's no reason other mechanisms
couldn't be used in fullscreen mode.
API: expose the model's working tempdir

Expose the document model's tempdir as a public read-only property.

(Replace a minor deprecated call too)
App launching: better messages, more sensible EAFP

Display messages about external apps starting or failing to start via the
transient mechanism.

No method calls in try/except blocks when using EAFP quack checks for
the method's existence.
Add Vector Layer commands

Add commands to create vector (SVG) layers.

Closes #57.
Add device mode chooser UI

* Add UI for setting devices as ignored for particular kinds of mode/task
  - Device permissions "All tasks", "Ignored", or "View manipulation only"
  - All devices are permitted for all tasks by default
  - Ignored events are silently discarded
  - Switching between modes with the pointer still works
  - Fixes #40.
* Make the kinds of modes devices can interact with configurable:
  - Mode instances declare what sorts of actions they do
  - Device compat. with a mode depends on the mode's declared behaviour
* Class hierarchy simplification & API improvements:
  - all events are now dispatched via the document controller
  - mode-switching now happens in the document controller
  - modes now declare whether they support pointer-based switching
  - Consolidate freehand modes into one
* Improve statusbar messages for modifier + mouse button commands.
Support for vector layers (SVG, edited externally)

Adds the ability to create vector layers and edit them in Inkscape (if
that's your default SVG file opener). Some polishing may be needed, such as
offering a choice from the DE's recommended SVG apps, but for now this
should suffice and allow testing.

Fixes #57.

There seems to be a consensus on the CREATE mailing list that arbitrary
image-like (or otherwise) layer file data is welcome in OpenRaster
containers, and that this is the correct interpretation of the current
spec. SVG is one of the more useful of these formats, since we gain useful
text and graphics layers.

To use this feature, create a new vector layer, then edit it with your
favourite external app via the menu. When you save the temporary file, a
new entry is created on the MyPaint undo stack.

Rendering in MyPaint is ultimately via librsvg, meaning you may need to
simplify Inkscape SVG files which rely on Inkscape-specific extensions
quite a lot. If nothing displays at all, make sure your librsvg install
ships a libpixbufloader-svg.so and that gdk-pixbuf-query-loaders lists SVG.
Add initial Travis CI support
Add Travis CI build status to README.md [ci skip]
Fix layer backdrop getter tests

Fix failing doctest for the layer backdrop determination method. Switching
to an isolated "normal" mode for layer groups by default in c413a96 broke
the test.
Update lib/ code to allow headless testing

Nose uses a slightly different environment from the one I've been testing
under at my end. Removed an extraneous Gdk import as well.
Test build in Travis

Only the non-GUI parts, though - the Travis build farm boxes are likely to
be headless boxes.