set and settings should have return value when values are defined (includes test and pod fix)
test multiple values and simplify wording
support HTTP_X_FORWARDED_HOST
Fix #121: By default all cookies are set to path=/

This was a regression if we look at Dancer 1 and can lead to very odd situation
where multiple sessions cookie are set (one for each path).

Test changed accordingly.
Use / as regex delimiter in logger role to prevent warning with Perl 5.17.

Warning: Unescaped left brace in regex is deprecated.
Perl bug report: https://rt.perl.org/rt3//Public/Bug/Display.html?id=113094#txn-1123192
GitHub doesn't have private messages anymore!

I thought the mailing list & IRC channel would be a useful substitute.
Complete rewrite of the session handling.

Session objects and session engines are now properly decoupled.

The Dancer::Core::Role::SessionFactory role is responsible for backend
implementations whereas the Dancer::Core::Session class implements a pure
session object.

We now have backend-agnostic sessions on one side, and session backends on the
other one.

The session cookie is set once, and only once, in a before filter (which is
automatically added to the application at BUILD time, if a session engine is
set.)

In the same manner, the session "flush" is done once and only once, in an
after filter.

The design is elegant and should be much better performance-wise.

To do things properly, a "session" attribute has been added to the context
object, which is the right place for it. The session attribute of the Context
object is lazy, and its builder is responsible for fetching an existing session
or creating a new one, depending on the presence of a valid dancer.session
cookie in the request.

All these changes make the code much better to read and to maintain.

Also, the bug with multiple sessions created for one request is now solved.
The session setting is not set by default anymore (like in Dancer 1).

With this commit, a Dancer 2 app can run without a session object. It was not
the case before, but was possible with Dancer 1.

Some tests needed to be adapted a bit to fit the fact that there is no default
session engines anymore.
Merge branch 'topic/session-refactoring'
typo
Include version in Server header
Tests should expect Dancer version in Server header
Merge pull request #119 from mokko/devel/setting

set and settings should have return value when values are defined
Move session ID creation into SessionFactory

Rationale: a session requires an ID, but otherwise should be
agnostic about the implementation details.  A SessionFactory
implementation might have special requirements for a session ID.

This commit moves the random ID generation into SessionFactory
as a default ID, but in a way that allows overriding by a
consuming class.

The session object memory address is removed from the input
to the hash function (as the ID is generated before the object
exists), but this is a very small loss of entropy.

If more entropy were desired, the length of the shuffled random
string could be increased to compensate.
Merge branch 'review/dagolden/topic/session-fixes'
hooks for SessionFctory
test session hook
Merge branch 'topic/session-hooks'
add more doco todos.

I'm going to be a busy man when I have a moment to sink my teeth into these
keyword exclusion at import time now works. DSL is loaded at import time, allowing for custom DSL