[2.3] Allow control over session start

| Q             | A
| ------------- | ---
| Bug fix?      | no
| New feature?  | yes
| BC breaks?    | no
| Deprecations? | no
| Tests pass?   | yes
| Fixed tickets | na
| License       | MIT
| Doc PR        | symfony/symfony-docs#2236

Refs #6036 
[![Build Status](https://travis-ci.org/drak/symfony.png?branch=autostart)](https://travis-ci.org/drak/symfony)

This PR does three things. One is to allow control over control session "start on demand". Two is to emulate PHP's session behaviour in that `$_SESSION` is `null` but you could read/write to it anyway before a session is started. This is emulated by allowing the session to return bags when the session is not started and which may be overwritten when the session starts. This behavior is controllable. The third aspect is to reintroduce explicit session start where the `FrameworkBundle\..\SessionListener` can start the session (this is not the same as session start on demand). The session is documented recommending sessions to be explicitly started but the feature had been removed from FrameworkBundle before 2.1 release.