Plug.Conn.Query.encode, creates query strings.

Here's the `encode` complement to the already-implemented `decode` function.

I would have liked to use `URI.encode_query` on the final list of field/value tuples, but that encoding function encodes the `[` and `]` characters, which makes it pretty unreadable, so I just did my own escapes and joins with `&` and `=`.

Always open to suggestions and criticism! :)
In complicated nesting cases, the output of the `Enum.map` is nested, so I had to flatten it out. Like:

```
encode(%{x: %{y: %{z: [1, 2]}, a: 3}})
map output -> [[{"x[a]", "3"}, [[{"x[y][z][]", "1"}, {"x[y][z][]", "2"}]]]]
```