Introduce ConfigReader role:

The current Config role sucks. It includes irrelevant attributes,
it includes all the triggers, and is a source of pain and distraught.

The ConfigReader role has a better separation of concerns:
- It includes local triggers that can be overridden by the consumer class
- It includes global triggers for every consuming class

The local triggers override any global triggers.
Replace Config role with ConfigReader role:

Now that we have ConfigReader, we can define the App-relevant
attributes (the different engines: session, template, logger,
serializer) in the App class.

We also define the local triggers for any of these engines
locally.

A test has been revised and updated to make this work.
Update Config role test to check ConfigReader role:

The relevant test for the Config role has been updated. It was
also oddly using the role as a class. WTF. Fixed.
Update Runner to use ConfigReader role:

No other changes necessary. Let's hold our fingers.
Remove Config role entirely in favor of ConfigReader:

Update all references to Role::Config and replace with Role::ConfigReader.
reflect changes
Merge branch 'mickey/config_cleanup'
Move default_config to ConfigReader role:

Instead of each ConfigReader role consumer defining their own attribute
for the default config, it is now provided in the ConfigReader role.

It has a builder (which, by default, provides an empty hashref) that
consuming classes can redefine locally.
Untangle Runner->Server, use HTTP::Server::PSGI:

Runner would create a server, of type PSGI or Standalone,
which would then either return a PSGI app coderef or run a
local server, respectively.

Beyond how silly it is to create a "PSGI server" that only returns
a PSGI coderef, and a "Standalone server" which is actually a PSGI
server, this is superfluous.

There was much confusion on which attributes (postponed_hooks, apps)
are kept in which class, and this became worse when deciding how to
propagate them to the app and back.

These are now all done in the runner, and the server has been
reduced to an attribute in the Runner.

The server has also been replaced with HTTP::Server::PSGI to remove
HTTP::Server::Simple::PSGI from our dependency chain and our minds.
reflect changes, fix changes files
Merge branch 'untangle-runner-server'
Remove Server role and finish() calls:

The Server.pm role was removed, but the file was kept. Fixing that.

Also stop calling ->finish() in a test, because psgi_app() calls it
now, the way it should.
reinstate Runner abstract
remove Server files
Add tests for including an arrayref of headers to dancer_response

Ensuring there are tests to match the documentation. Note that extra
cookie headers are currently not being included in the request object cookies
hash. Ref #500.
Build request cookie objects from request->headers, rather than request->env.

As the request object is built, headers from the env are added to the headers
object, however cookies were still being populated from the env. However, when
testing you may need to pass in extra headers in the request. Dancer2::Test
allows for this, updating the headers in the request, but any extra cookies
were only accessible via request->header, not request->cookies.

Building the cookie objects from request->headers resolves this and closes #500.
reflect changes
Merge branch 'pr/bugfix_test_request_headers'
Add test that X-Forwarded-Proto header is used when behind a proxy

Port of test from Dancer PR #1015.
Update PSGI env keys with 'HTTP_' prefix for context and error tests