Handle empty PHP_SELF SCRIPT_NAME and SCRIPT_FILENAME.

ZF2 does not accept an empty string in these values.
Reworked to make better use of default ZF2 codebase.

Huge commit because of refactoring.

- [BC Break] Bootstrap _must_ be called before injecting.
- [BUGFIX] Add the request to the MvcEvent.
- Zend\Mvc\Application::init can be used again.
- ZendHttpKernel::init was removed.
- The kernel implements ListenerAggregateInterface
- The application is not modified, so you can detach the HttpKernel
  (because no listeners are removed anymore).
- ServiceUnavailableException by default.