Some refactoring in Plug.Conn.Utils

First of all, I took advantage of this PR in order to fix a typo in the specs for `Plug.MIME.path/1`, which specified `Path.r` as a type when it should have been `Path.t`.

Anyways, I refactored some code in `Plug.Conn.Utils`; most of the things I changed are justified in comments in the diff.

Also, I'm pretty sure to be annoying when I do this, but I **had to** (:smile:) remove spaces after `<<`s and before `>>`s, first in order to be consistent with everything else, but also because of [this](https://github.com/niftyn8/elixir_style_guide/commit/b8475d6c0c3352171d634750e6f3a902956da39e) @josevalim's commit in the Elixir style guide. :)
Use a for comprehension so we don't need to traverse everything twice (or leave it as is). :)