Closes #18 Closes #20 Closes #21 Closes #22 Adds user model validations, implements spec to match validations.