Added parsing of arbitrary media type parameters.

Based on #4918.

Related to #4127.

Conflicts:
	actionpack/test/dispatch/mime_type_test.rb
no need for bang bang :bomb:
fix method visibility
Use Set#subtract and Set#merge for keeping track of used / unused keys
again, use Set#subtract
mutations can't be done without the consent of our proxy object.  This
is one benefit of choosing composition over inheritance.
rename @used to something a bit more meaningful
mutations on the underlying hash should also mutate the discard set
simplify sweep now that discard and flashes are in sync
Fix example in flash middleware
fix the Flash middleware loading the session on every request (very dangerous especially with Rack::Cache), it should only be loaded when the flash method is called
Remove unused ivars left from close checks

These ivars were missed in d142572567 when close checks were removed
bread AD::Request::Session to it's own file, consolidate HASH OF DOOM lookups
make sure the superclass matches so load order does not matter
Store FlashHashes in the session as plain hashes rather than custom objects with unstable class names and instance variables.

Refactor FlashHash to take values for its ivars in the constructor, to pretty up FlashHash.from_session_value.

Remove stale comment on FlashHash: it is no longer Marshaled in the session so we can change its implementation.

Remove blank lines I introduced in controller/test_case.rb.

Unit tests for FlashHash#to_session_value.

Put in a compatibility layer to accept FlashHash serializations from Rails 3.0+.

Test that Rails 3.2 session flashes are correctly converted to the new format.

Remove code path for processing Rails 3.0 FlashHashes since they can no longer deserialize.

Fix session['flash'] deletion condition: it will never be empty?, it will either be nil or a hash with 'discard' and 'flashes' keys.

Conflicts:
	actionpack/lib/action_controller/test_case.rb
Remove nodoc from FlashHash #[]= [ci skip]
Add examples `alert=` and `notice=`, using memes
extract alert= and notice= examples to FlashHash#now [ci skip]
Code cleanup for ActionDispatch::Flash#call

The nested `if` was replaced by using `presence` which takes account for
the given hash when it is `nil` or when it is empty. The `else` was
removed because what it was doing was to assign to `env[KEY]` the
value it already had.
Fixing build broken by this change

c43ca06ca091fc09e2c86bb051ac92b648f12b64