separating docs from code
remove trigger in caller to set location:

In order to remove the trigger, we need the builder to actually
be a real builder: run for the creation of the attribute and returning
the location string back.

The problem is that the attribute comes from the Config role, and
it has a default there. Instead, we remove the default and replace
it with a builder. Then we can override the builder in the runner
so it has its own way of building the location.

The "required" is removed because it's pointless to have a "required"
when there's a default or builder. It will always have a value.
readonly'fy and remove coerce by fixing it in the builder:

The only usage for the builder (and thus the coerce) is the Runner
and the Config role. The Config role already returns the absolute
path, so the only need for the coerce is the Runner.

By making sure the builder in the Runner returns the absolute, we
no longer need to coerce the value.

There is no need for the "location" attribute to be readwrite
anymore.
these can be readonly
avoid default argument variable
This is just silly:

The "BUILDARGS" method can be used to set/delete/change values that
will be used to generate the class. Running "around" on it is less
than pointless since that's what "BUILDARGS" is used for.

More interestingly, this tries to accomplish a default value for the
attribute which can be set via the "default" option. More interestingly,
there is *already* a default attribute for it set.
move postponed_hooks to server from runner:

The runner was holding on to global postponed_hooks which would then
be inserted into the app (or new postponed_hooks from the app would
be added to it), but there was no point holding it in the runner. It
should have in fact been in the server. (one could claim that not even
there)

This commit moves the postponed_hooks to the server instead of the
runner. Also, in order to make this available, it exposes the runner
object using $Dancer2::runner or Dancer2->runner. Since it's already
global, might as well make it public so it would be easier to reach
the server.

This also removes the need to save a reference of the runner in the
server. This creates a circular reference that is hopefully not a
problem with the use of weak_ref which I hope we could eliminate in
the first place.