user abstraction changes

- create AuthUserInterface, specifically for 'authorized users'
- interface for various user auth methods, log in/out, etc
- remove abstract methods from UserAbstract
- UserAbstract assigns a cookie/session id, a user is simply a user
- AuthUserInterface is an authorized user, a type of user
add support for unix socket connection in Kv\Redis