A.5.1.1 New BranchingSessionContext

###
A.5.1.1 New `BranchingSessionContext`

A persistent problem with server-side sessions is the browser state getting out of synchronisation with the application state. This occurs when the user reloads the page or uses the "back" button.

A new `BranchingSessionContext` application context class has been added that attempts to work around this problem by creating a new server-side session for every interaction with the browser. The unique session identifier is stored in a hidden form field, rather than a cookie.

The new Context class is intended to be used with the server-side Application classes, and provides a similar experience to storing the context in a hidden form field, without the overhead and security issues of sending the context on a round-trip through the user's browser.

No effort is made at this time to control the resources used by these server-side sessions, other than expiring them after `session_age` seconds.