Make ActionDispatch::Request::Session#fetch behave like Hash#fetch

`Session#fetch` was mutating the session when given a default argument and/or a block. Since `Session` duck-types as a `Hash`, it should behave like one in these cases.