[Sessions] Decouple interface from WS, align with HTTP

This is technically a BC break so it's going in 0.4.

Before `HttpServer` was separated out from `WsServer` we read the HTTP headers from each `$conn->WebSocket->request` variable and assumed `SessionProvider` would sit on top of `WsServer`. Now with a cleaner separation `SessionProvider` should sit on top of `HttpServer` and below `WsServer`, being injected with the HTTP headers rather than assuming them inside a passed object. 

This is effectively removing cohesion from the `WebSocket` namespace and loosely coupling with the `Http` namespace, which makes more sense as PHP Sessions work at the HTTP layer using Cookies to maintain state. It is also doing it an explicit way with a declarative method signature rather than the previous implicit, assumed variable on an object.