Rework RDF interface to use RDFLib Python package.
Consistently use `as_string()` for _our_ string representations of RDF nodes.
Use a string representation of a node as the key when mapping to the node's id in our version of an `IOMemory` store so that our sub-classed node instances are mapped to equivalent nodes created by RDFLib's parser.
Add methods and properties used in our RDF mapping module.
A `Statement` can't be derived from `tuple` if it is to have properties.
RDFLib's `QueryResult` class does what we want so use it directly.
Allow a Graph's uri to be set.
Return `Statement` instances from `get_statements()`
RDFLib appears to have a bug in its serialiser when `base` is used as a parameter, as the resulting base URI is empty. (`xml_base` does work for RDF/XML output).
Add example for testing.
Use reworked RDF module in mapping code.
Improve error messages.
Specify `rdflib` package in setup.
Update to use current version of `pint` as it now directly provides our local functionality.