Unit Tests for SessionImpl

I've added a bunch of unit tests for SessionImpl, to make sure to catch any bugs before they get too far ^^

Also, the public hostname for the server is available with `Config::hostname()` and can be configured with an environment variable or set directly. (ie command line)