PyQt5 support via qt_backport package

This is a cleaned up version of the last pull request I closed.

Most of the `PyQt5` support comes directly from `qt_backport`'s emulation of the `PyQt4` (or `PySide`) API.

I modified your `Qt.py` mostly to provide a bit more insight to the rest of the code on what the underlying Qt implementation is so that intelligent switching could be done where required.  Pre-existing code used `USE_PYSIDE`, and the existing `pyqt5` branch had `QT_LIB`, but I expanded on that.  Qt.py is by far the biggest change I made.

All other file changes were pretty much minor, coming about in support of the above.  Specifically while working to make every single example work as well as I could (this process also helped flesh out corners of the `qt_backport` emulation).

I see that a `.gitignore` change slipped in there, too (sorry).  This was because I was using `pip install -e` on the package while working and constantly removing the egg info was tiresome (you'll see I missed a round of it in the commits).

---

**Additional notes:**

What were the "variety of bugs" fixed by `setGraphicsSystem('raster')`?  Qt5 does not have this and I am curious what bugs will surface.

One oddity I haven't been able to fix is your `FillBetweenItem.py` example.  The fills end up being very blocky, as in [this screenshot](http://static.inky.ws/image/4729/Selection_295.png).  I'm not sure what is up here, especially since the fill between in the bottom left of the basic `Plotting.py` is perfect.