Add configKey() method.

This method allows configuration to be set per top level cookie. This
will replace many of the parameters used in read()/write() and simplify
the overall API that CookieComponent uses.
Start hacking on read() function and trying to get it working.
Fix read() and check().

Both appear to be working now.
Fix writing mixed encryption cookies in one write() call.

With the various parameters removed, having the correct configuration
for each top level cookie key is important.
Update delete() to work with new implementation of cookies.

Update delete method, and fix typos in test data.
Add additional test for read/write and remove destroy.

With CookieComponent managing multiple cookies, the destroy() method
would simply be an alias for delete() which is not useful.
Remove encrpyption method.

It really served no point. People can simply use config() and
configKey().
Check cipher names when encrypting or decrypting values.
Remove unused code paths.

I couldn't find a test for this loop case so I'm removing it.
Expand doc comments a bit.
Expand doc blocks more.
Use short array syntax.
Use the Time utility instead of \DateTime

Doing this allows the mocked time objects to take effect.
Merge pull request #3602 from markstory/3.0-cookie-component

3.0 cookie component