Rack‘s version modified to handle non-String values
Copied from Rack
Recursive hash merge
Recursive hash update
Stolen from Rack
Receives a URL and returns just the path with the query string sorted.
Adapted from Rack
[Validate]