A set of URI classes and a URI parser, based on RFC 3986, inspired by java.net.URI