Addresses the following points from #14162
> - There is no built-in counterpart to url build-query for splitting a
query string
There is `from url`, which, due to naming, is a little hard to discover
and suffers from the following point
> - url parse can create records with duplicate keys
> - url parse's params should either:
> - ~group the same keys into a list.~
> - instead of a record, be a key-value table. (table<key: string,
value: string>)
# Description
## `url split-query`
Counterpart to `url build-query`, splits a url encoded query string to
key value pairs, represented as `table<key: string, value: string>`
```
> "a=one&a=two&b=three" | url split-query
╭───┬─────┬───────╮
│ # │ key │ value │
├───┼─────┼───────┤
│ 0 │ a │ one │
│ 1 │ a │ two │
│ 2 │ b │ three │
╰───┴─────┴───────╯
```
## `url parse`
The output's `param` field is now a table as well, mirroring the new
`url split-query`
```
> 'http://localhost?a=one&a=two&b=three' | url parse
╭──────────┬─────────────────────╮
│ scheme │ http │
│ username │ │
│ password │ │
│ host │ localhost │
│ port │ │
│ path │ / │
│ query │ a=one&a=two&b=three │
│ fragment │ │
│ │ ╭───┬─────┬───────╮ │
│ params │ │ # │ key │ value │ │
│ │ ├───┼─────┼───────┤ │
│ │ │ 0 │ a │ one │ │
│ │ │ 1 │ a │ two │ │
│ │ │ 2 │ b │ three │ │
│ │ ╰───┴─────┴───────╯ │
╰──────────┴─────────────────────╯
```
# User-Facing Changes
- `url parse`'s output has the mentioned change, which is backwards
incompatible.