Changeset support, and error handling on changesets.
DuplicatedIdentifier exception no longer assumes the duplication already exists.

If someone is trying to assign the same identifier twice in one changeset,
DuplicatedIdentifier would fail at `get_hal()`, which causes a 500.
exxception `get_hal()` improvements
types → tags
Make use of Py3's exception chaining (PEP-3134)
Add changeset views to views.__init__
Identifier view can now return all with identifier scheme; JSON Schema docs
Use ChangesetView as a base for Source views as they now use changesets