User preferences, session preferences, purge old sessions, session based locking.

SD-6833 sub-tasksSaved preferences on log-out
SD-7013 sub-tasksAs a user, I want to sign in to Superdesk multiple times simultaneously
We had the requirements for session preferences as:
- They need to live with the session so when session gets deleted by either log out or session clean up task those settings are prone to go.
- User can have multiple sessions opened at a time so user can have different session level settings for different sessions.

We thought about few options: 
##### Option 1 #####
* We could create a resource for preferences and keep user and session preferences in that. 
* Every record would have one user preference but an array of session preferences
* Every logout or every "session clean-up' needs to delete the corresponding session preference

##### Option 2 #####
* We could only store session preferences in its own storage so we could have one-to-(1..0) relation with every auth record as they represent a session
* Every logout or every "session clean-up' needs to delete the corresponding session preference

##### Option 3 #####
* We could save the session_preferences in Auth as there's a one-to-(1..0) relation
* Logout deletes auth record so session is deleted automatically

We decided to go with Option 3 as there thought that session preferences are meaningful only in the context of "session" and this natural context would simplify coding as delete and clean up happens naturally along with the parent session object. We don't return session_preferences to any "auth" related calls so we hope this will not affect the token related end calls.