New features:
* Implemented [STAM Transpose extension](https://github.com/annotation/stam/blob/master/extensions/stam-transpose/README.md): a `transpose()` function is now available on Annotation and TextSelectionSets #28
* Implemented UNION constraint in the STAM Query Language 26
* Exposed functions for ID (re)generation (`IdStrategy`, `generate_id()`, `regenerate_id()`)
* Implemented `TextSelection.intersection()`
Minor API improvements:
* Implemented missing high-level iterator for AnnotationDataSet
* added `Offset.len()`, `Cursor.shift()` and `Offset.shift()`
* added `ResultItem<Annotation>.textselectionsets()`, `ResultItem<Annotation>.textselectionset_in()`
* constrained the characters used in randomly generated IDs to include only alphanumeric ones
* better error feedback in querying
* extra inspection methods for AnnotationBuilder and SelectionBuilder
Bugfixes:
* Fixed serialisation of webannotations and added supported for internal range selectors
* Fixes for merging multiple annotation stores
* Implemented several missing constraint handler for the query language
There was also some refactoring and dependency upgrades.