added user model with authentication, password hash generation and tests