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!
If you call configure_session with renew: false and drop: false, it is going to fail. We should add a test and fix the code.