Add readByEmail function to PoetsRepository
Add PoetValidator

Also add little script in server/test that somewhat exercises the
functionality of PoetValidator. It's not an actual test--there are no
assertions--this just serves as a bit of a sanity check until we get
actual tests in place.
Add email validation and hashed password check to PoetValidator

Email validation is a super basic regex. We should probably eventually
implement an email confirmation thing for signups to truly validate the
emails and so that someone can't sign up using someone else's email
address.
Add validation to register create route
Add error rendering logic to register template with simple style
Add password validation to client side

Since the password is getting hashed before it's sent to the server I
couldn't do any validations on the presence or length of the password on
the server side.
Add error handling for failed logins

Passport's verify callback expects three params: err, user and info. We
were previously using the err param to return the error message "Invalid
username or password", but I guess this is supposed to go in the info
param. If it's in the err param the generic unexpected error handling
mechanism will get triggered and fire off the 500.

So, I updated the authentication service to use the info param for the
error message and updated the code in the login routes to handle the
various cases. I added the error rendering logic to the jade template.
Merge pull request #33 from jimguys/poet-validation

Add Poet Validation