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.