Added basic session handling for HTTP clients
Made client sessions disposable

Client sessions are now disposable and clean up their resources when the
client disconnects.
Renamed BufferSize to InternalReceiveBufferSize

Renamed for clarity
Implemented a max request size

The client will be disconnected and a warning logged if the client sends
a request larger than the allowed size.
Added logic to disconnect all client on shutdown

The server will wait until processing is complete for the socket before
closing each one.
Implemented constructors for HTTP request
Added placeholders for HTTP responses