test(util/uri): add property tests for decode/encode

This patchset introduces property-based testing for the new
uri-encoding utilities.

The strategy is simple and nondeterministic: ensure that the new
function give the same output as the stdlib uri encoders for all
inputs.

This gives us confidence that future modifications to these encoders
will remain correct.

Minor docstring updates are made to show users what is being modeled.