Simple URI component validation

Pending a URI::GID < URI::Generic subclass to handle it for us.
Ensure that invalid Global ID URIs return nil when located.

Raise URI::Error subclasses instead of ArgumentError and rescue them in
Locator.locate, since it's expected to return nil regardless of error.
Raise URI::InvalidURIError if wrong uri.