Read $_COOKIE superglobal into the request object, add tests, and fix request query config issue.

Integrates `$_COOKIE` superglobal into the request object at `$request->cookies`.

In the process I found a bug in which query params passed into the constructor would overwrite rather than merge with the `$_GET` superglobal.  I fixed this by re-working the parent classes to call `parent::__construct()` at the end of the constructor so they don't override anything done in `_init()`.