Port to Gstreamer 1.0

Note: This change will break many user configurations.  See
`docs/backwards-compatibility.md` for migration notes.

Gstreamer 1.0 has been out for more than a year now and is where the
majority of the upstream development is going nowadays.  This change will
make it easier to develop further more advanced features such as sound
analysis, support for testing Smart TVs with webcams and new UIs for stbt.

Using GStreamer 1.0 from Python is incompatible with Gstreamer 0.10 in
that Gstreamer 1.0:

1. Gstreamer 1.0 has a different C API to 0.10
2. Some of the elements and properties have been renamed in Gstreamer 1.0.
3. Gstreamer 1.0 uses GObject introspection for automatically generating
   Python bindings from the C API

Migration was mostly straightforward, but the changes to the
appsink/appsrc were quite tricky.  Because caps information is no longer
attached to buffers appsink now produces `GstSample`s rather than
`GstBuffers` which includes caps information.  Getting this right so the
caps can get through to the appsrc was a little fiddly.

The bigger issue are regressions in upstream GStreamer which affect our
hardware support.  We are fixing issues upstream but this means that you
may have to have a bleeding-edge GStreamer for certain hardware to work.
See `docs/backwards-compatibility.md` for specifics.

Notes:

* For GStreamer 1.0 vp8enc has replaced the property "speed" with
  "cpu-used" where speed=7 is the same as cpu-used=6.  Also the default
  quality settings have changed requiring {min,max}_quantizer to be set.
  See GStreamer BugZilla [#684206] for more information.
* Performance is significantly degraded (by a factor of ~4).  Based on
  profiling this seems to be related to it being slow to create buffers
  from numpy arrays as required for drawing notes on the saved/displayed
  video.  This will be improved in subsequent commits.
* on_new_sample is called as a GObject callback and should never throw.
  This was noticed as with Gstreamer 1.0 it requires a return value.  We
  should probably catch all exceptions thrown in any callback and work out
  how to signal errors some other way.
* pylint 0.25.1 which I have on my Debian testing machine doesn't
  understand gobject introspection imports so I've had to add a pylint
  disable to the import.  Upgrading to pylint 1.0.0 fixes this but in the
  interests of working with multiple pylint versions the disable remains.
* I've had to increase the default threshold in is_screen_black test as it
  seems, possibly with the move from `video/x-raw-yuv` to
  `video/x-raw,format=I420` that blacks aren't as black anymore, possibly
  as a result of GStreamer 1.0 choosing a different type of yuv in 0.10 or
  possibly due to changes introduced during the ffmpegcolorspace ->
  videoconvert change.

[#684206]: https://bugzilla.gnome.org/show_bug.cgi?id=684206
debugging: Dump internal GStreamer pipeline state on error

GStreamer has a debug feature where it can dump how a pipeline is wired
up as a graph.  This is very useful for debugging problems with the
GStreamer pipeline.  This commit adds the necessary hooks such that this
information may be dumped when an error occurs much like gst-launch-1.0
already behaves

The effect is that if `GST_DEBUG_DUMP_DOT_DIR` is defined in the
environment and an error occurs a GraphViz dot file will be written to that
directory.  You can then use `dot -T png -o image.png graph.dot` to convert
it to a PNG.

See [Running GStreamer Applications][1] in the GStreamer documentation for
more information.

[1]: http://gstreamer.freedesktop.org/data/doc/gstreamer/head/gstreamer/html/gst-running.html
Don't skip test_that_video_index_is_written_on_eos on OS X

GStreamer 1.0's webmmux (from macports gstreamer1-gst-plugins-good 1.2.3
package) does work correctly on OS X.
(FAILING TEST) Don't skip test_save_video on OS X

GStreamer 1.0's webmmux does work correctly on OS X (see the previous
commit). However, test_save_video hangs indefinitely. I need to
investigate, but in the meantime I shouldn't hide the problem from
myself (or anyone else testing on OS X). test_save_video does pass on
Linux.
docs/backwards-compatibility.md: Document current hang with Blackmagic