Refactor Session Middleware

Sessions are now user agent agnostic. Before, the session fingerprint
was created using the user agent header. This linked the session data
with the user agent.

When the browser is updated, the user agent also is updated, which caused
the session to be lost due to the user agent not matching the one stored
in the session data.

Removing the dependency on the user agent makes sure the session persists,
regardless of the user agent string being sent.