Refactor of user management

Refactor of the user management code, code is split in 3 parts

 - `\OC\User\User` represents a user and provides the methods to manipulate that uyser
 - `\OC\User\Manager` manages the users and backends
 - `\OC\User\Session` keeps track of the current user session, handles login, lougout, etc

Fully backwards compatible by re-implementing OC_User on top of the new classes

cc @karlitschek @DeepDiver1975 @tanghus