rearrange everything, add pep440, pre-first-tag, templates

This makes significant changes to the way versions are reported.
All (most?) forms of get_versions() now return the dictionary described
in developers.md, and get_version() returns get_versions()["default"],
which is the "git describe" -style string (except now it uses "0" as a
fake tag if no real tags have been made yet).

Changes which might be a bad idea and should get reverted:

* replacing `__init__.py` with `get_versions()["default"]` instead of `get_versions()["version"]`
* using "0" as a fake tag, instead of just saying "unknown"
* using versions["describe"] in cmd_sdist

Tests are still failing. In addition to being fixed, they also need to
be enhanced to cover the pre-first-tag case, and to verify more keys of
get_versions() than just the default.