[WIP] PEP 440 Implementation

#### TODO
- [x] Sort local versions using the PEP sort order.
- [x] Figure out where exactly prefix operators are valid ([issue](https://bitbucket.org/pypa/pypi-metadata-formats/issue/33/better-define-the-prefix-matching-in)).
- [x] Figure out if ``~=N`` is a valid operator ([issue](https://bitbucket.org/pypa/pypi-metadata-formats/issue/40/top-level-doesnt-make-much-sense)).
- [x] Don't allow ``~=N``.
- [x] Document the spec? Maybe just linking to [PEP 440](https://www.python.org/dev/peps/pep-0440/) is enough?
- [x] Write a contrib script that will test versions on PyPI against ``Version()`` and ~~``Version.suggest()``~~.
- [x] Write a contrib script that will test version sorting on PyPI against how we sort then and how ``pkg_resources`` sorts them.
- [x] ~~Implement ``Version.suggest()``.~~
- [x] Implement ``Version().is_prerelease`` or something similar.
- [x] Ensure all of the specifiers sanely handle Epoch versions.
- [x] Convert local versions to use ``+`` as a separator rather than ``~``. See [issue](https://bitbucket.org/pypa/pypi-metadata-formats/issue/42/use-a-different-character-to-indicate). 
- [x] Disallow a prefix match after a ``.devN`` segment (e.g. ``==1.0.dev1.*``).
- [x] Implement extra normalization steps to increase compatibility.
- [x] Implement ``===<anything>`` which can be used as an escape hatch for non conformant versions.

#### Pending PEP Updates
- [x] Local versions are alphanumeric and ``.``
- [x] Disallow "top level" ``~=`` like ``~=1``.
- [x] Removal of default comparison operator
- [x] Removal of parentheses and returning to the ``pkg_resources`` style.
- [x] ``rc`` and ``c`` equivalency. 
- [x] Use ``+`` instead of ``~`` for local versions.
- [x] Disallow a prefix match after a ``.devN`` segment (e.g. ``==1.0.dev1.*``).
- [x] Document extra normalization steps to increase compatibility.
- [x] Document the ``===<anything>`` escape hatch.
- [x] Do not move the local version into a Wheel build number.
- [x] Figure out how all of our characters map into filenames in current packaging tools.
- [x] Update the compatibility statistics.
You should put the exclude in the `flake8` section so that people can just run `flake8` on the CLI.