3.0 cookie component

Implement the changes described in #2218. CookieComponent can now:

- Manage multiple cookie namespaces.
- Configure each namespace independently.
- Work mostly like it always has.

And it does all this with fewer lines of code and simpler code.