Session cookie store with message verification.

This PR brings the ability to store signed session cookies.

```elixir
defmodule MyApp do
  use Plug.Router
  import Plug.Conn

  plug Plug.Session, store: :cookie, key: "_my_app_session", secret: System.get_env("SESSION_SECRET")
  
  get "/put_session" do
    conn = put_session(%{foo: :bar}
    session_cookie = get_session(conn)
    resp(conn, 200, session_cookie.foo)
  end
end
```
The rationale for this is the `key` is totally ignored for session cookies. So it seems lame to have to do:

```elixir
get_session(conn, nil)
```