Some refactoring and docs for Plug.Conn and Plug.Conn.Unfetched

`Plug.Conn.Unfetched`: just some added docs.

`Plug.Conn`:

- More detailed docs overall
- Refactored `full_path/1` in order to remove the use of a private function
- Major refactor to `configure_session/2`
- Replaces two calls to Erlang's `:lists` with Elixir's `List` module
- Added the `port_number` type (`0..65335`)

I added comments to the diff where I felt some choice had to be justified :). Let me know if something needs to be changed!
And by using it we don't need to declare our own type.