implement quiver 3d

this fixes issue #1026
pep8 spacing
Revert "pep8 spacing"

This reverts commit 2db111899d2b679aa5f534ed1418d273f3dc19e7.
pep8 spacing and imports
adjustments according to code-review
docs
Handles some corner cases in vector math
bug fix and whats_new
Merge remote-tracking branch 'origin/fix-1026' into fix-1026
Implement backend for PyQt5 + modify Qt4 backend to Qt5 structure.

A backend for PyQt5 based on intial work by @badders, modified to fix Qt5 mouse event handling,
then re-structured to implement as a wrapper over the existing Qt4 code. Following discussions on
this pull request:

https://github.com/matplotlib/matplotlib/pull/2471

The code has been restructured to implement PyQt5 backend as a first-class implementation, with
other Qt backends (PyQt4, PyQt4v2, PySide (Qt v4)) wrapping it and modifying as required. The issues
of objects being moved around in the Qt namespace (many QtGui objects now in QtWidgets) QtWidgets is
simply assigned as a copy of QtGui if not available. This achieves the intended outcome with the
minimum code.

PySide required re-ordering of import on FigureCanvasQTAgg or paintEvent
function would not being called on FigureCanvasQTAggBase resulting in
black window.

A number of indentation, import and other fixes.
Fix problems identified in pull-request review

This commit fixes the following issues identified in comments:

- Errant unicode space in backend_qt5agg.py (bad editor)
- Update should occur via via self._priv_update in FigureCanvasQTAggBase.draw()

In addition I noticed:

- A stray QtGui.QLabel in formsubplottool.py
Fix setupext.py for the case where both PyQt4 and PyQt5 are installed

If both PyQt4 and PyQt5 are installed in the same Python the setup check
for the modules will cause a RuntimeError as they are both imported.

The Gtk module uses a multiprocessing pool to perform the imports, and this
approach is used here. However, if we import PyQt4 normally, then PyQt5
using multiprocessing the import is incomplete (no version information).
Instead, we default to multiprocessing for both PyQt4 and PyQt5 and only
fall to normal imports if that is not available.

In the case of a RuntimeError on a normal-style import the error is raised
as `CheckFailed("Could not import: are PyQt4 & PyQt5 both installed?")` to
give a hint as to the problem.
BackendPySide using multiprocessing + added to setup.py

BackendPySide is now implemented using the same approach as for PyQt4 and PyQt5. The
calls in setup.py have been updated to include the 3 Qt interfaces:

    setupext.BackendQt5(),
    setupext.BackendQt4(),
    setupext.BackendPySide(),
Updated algorithm

Includes better way to handle rotation. However some updates are
required to be put again. xbtsw will fix soon.
DOC : added annotation example to arrow docstring

closes #2350
BUG: Fix 'TypeError: expected bytes, str found' on Python 3
Fix error on pyplot initialisation in IPython

There was a bug on the pyplot initialisation that was wrongly looking for qApp in
PyQt5.QtGui rather than PyQt5.QtWidgets. I've updated the init to do this
correctly, which hopefully fixes the bug reported by @tacaswell
Fix doc for sharey keyword in pyplot.subplots.
Merge branch 'fix-1026' of git://github.com/xbtsw/matplotlib into 3dquiver

Conflicts:
	doc/users/whats_new.rst
Address remaining quiver3d issues. Fix tests.