Encode signed global id metadata with a hash.

Let's us accommodate new metadata without breaking old messages.

This change also flips some `assert_equal` calls with wrong ordered arguments.
Use string keys in to_h.
Merge pull request #31 from kaspth/hash-metadata

Encode signed global id metadata with a hash.
Expiration for signed global ids.
Merge pull request #29 from kaspth/signing-expiration

Expiration for signed global ids.
Passing nil expires_at turns off expiration checking.
Merge pull request #33 from kaspth/nil-expires-at

Passing nil expires_at turns off expiration checking.
Create URI::GlobalID scheme
Change URI::InvalidURIError URI::InvalidComponentErrorfor
Rely on URI::GlobalID for type checking
Add URI::GlobalID.build
Add URI::GlobalID.parse
Create URI::GlobalID.create method
Create URI::GlobalID.validate_app
Add documentation for URI::GlobalID
Extract scheme to a constant in URI::GlobalID
Extract scheme to a constant in URI::GlobalID
Ensure that #foo= calls always validate for any component in URI::GlobalID
Get rid of unnecessary private method and document better URI::Generic.new behaviour