add User model and user authentication with unit tests

Signed-off-by: Brian Earwood <brian.earwood@gmail.com>