Added interfaces IUserAuth and IUserAuthProvider
Split up the interfaces into multiple parts (IUserAuthDetails, IMeta) to comply with ISP in order to refactor shared functionality between the UserAuth and UserAuthProvider.
Added initial support for custom UserAuth