Collect caller/location attrs into single role.

Currently Dancer2::Runner defineds the caller app and the builder for
location, while the location attribute is part of the ConfigReader role.
Collect them all together into a role that provides the location
attribute.

One downside is to the current split is that the caller is set on first
import Dancer2, which gets in the way of supporting multiple apps with
separate configs. This is also some of the most unliked code in the
codebase; its now all together for future revision...
Use Role::Location in ConfigReader.

Replaces the location attribute in Role::ConfigReader with
Role::Location.
Remove references to caller and location.

The Runner is a singleton; it should not have the configuration of
the first app that imports Dancer2. Start by removing its caller and
location attributes (i.e. do not include the ConfigReader role).

However the Runner does require to manage some global configuration
for all apps; such as the environment and properties of the default
server (port, host, etc.). Add a 'config' attribute to keep track
of this (and somewhere for global triggers to update).
Split Runner config into global and per app options

Core::Runner only holds configuration for what are effictively "global"
options (it is a singleton). This includes 'environment', and the
'server_tokens' & 'startup_info' (taken from #596). Note that the
Runners' environment may not be changed once singleton exists.

Per application config options previously in the Runner's default config
were moved into Core::App.
Default ConfigReader environment is development.

No need to duplicate the (global) Runner environment default in the
ConfigReader role.
default_config is an attribute; no need to check if class can do it.
Update how Runner and Apps are instantiated

'caller' is now passed to the App (not the Runner). No longer need to
pass location and runner config to App either.
Update instantiation of not_found_app in Dispatcher.

Use the first registered apps' called and location for the not_found_app
in the dispatcher. This is analogous previous behaviour of using the
Runners' caller and location - which was from the first registered app.
Use Runner config to disable startup info

Remove the FIXME now startup_info is in the Runner config.
Update runner tests; no location attr, no caller required
Update ConfigReader test

Test classes override builders to provide values.
Rework t/config_app* into a single test case.

D2 now supports multiple (independent) applications; each with their own
configuration, appdirs (location), etc. Woot!
Add a global trigger for every config option the Runner supports
Enable traces if ENV{DANCER_TRACES} set when Runner instantiated
add test to verify caller is okay
Cleanup attributes:

The default for "caller" attribute is useless because the value is
provided in all accounts. We also added a test to that end.

The required for "location" attribute is useless because it's derived
from the builder.
Role::Location -> Role::HasLocation
Return default for caller, don't confuse scopes:

The default for the "caller" attribute was necessary because it
wasn't provided in various test scripts. However, it cannot be
written as a sub() in and of itself, because it then enters another
scope. By entering another scope, it overrides the caller with the
value "(eval <number>)", so instead, we use Sub::Quote in order to
make that inlined, thus retaining the original scope.

A problem that emerged is the shitty t/app.t test which checked
for $! instead of $@ after an eval. Because of this problem of scopes
a previous piece of code in that script failed and raised $!, which
was checked (instead of $@) to conclude a check there failed as it
should.

As soon as we fixed the scope problem with Sub::Quote, it suddenly
didn't raise a system error and $! became undef. That's when the
additional check (which should have checked $@) failed. We fixed
that too.

More context on this can be found at:

https://github.com/PerlDancer/Dancer2/pull/611
reflect changes
Merge branch 'feature/untangle_runner_config'