bcrypt password hash test now passes

Forgot to revert to to .to_not instead of .to in one of the expectations.  Oops.
Usernames are now unique

Created a unique validation in 'rubyland.'

An activerecord validation is like a doorman, and the database is like a building.  The doorman makes sure to throw out anybody that doesn't belong before they get past the door.

An activerecord table constraint is like everybody in the building looking at
a stranger and knowing they don't belong, so they get together and throw
the stranger out.

The first is less secure than the latter.  The latter is really hard to change later. Changing a database constraint is like trying to change a community's dislike of strangers, while changing an activerecord validation is as easy as hiring a new doorman.
users should be identified by their e-mails and not their names

I changed the name field in the database to e-mail, and changed everything in my application to reflect that.  The testing suite caught all of the places I forgot to change.  yay testing!
The app should only accept a valid e-mail.

An activerecord validation is like a doorman.  Our doorman only accepts users who have a valid e-mail. In this case, a email activerecord validation is like a photo id.  This particular one just checks to make sure the e-mail looks like an e-mail, like the doorman checks your photo id to make sure it's real (or at least make sure you paid for a really good fake id.)
Users are required to have an email

Yay email
Couldn't write a custom Activerecord error message

validates :email, :presence => true, {:message => "please give your email"}

I will give major kudos to the person that can explain to me why this activerecord validation gave the following error:

 `rescue in block in validates': Unknown validator: 'MessageValidator' (ArgumentError)

Ok, you get kudos, [Kevin Sjöberg](http://stackoverflow.com/questions/18262704/custom-message-with-validates-presence-of-not-working)

Taras-MacBook-Air:hacker_news tlroys$ rspec
/Users/tlroys/.rvm/gems/ruby-1.9.3-p484/gems/activemodel-3.2.12/lib/active_model/validations/validates.rb:96:in `rescue in block in validates': Unknown validator: 'MessageValidator' (ArgumentError)
  from /Users/tlroys/.rvm/gems/ruby-1.9.3-p484/gems/activemodel-3.2.12/lib/active_model/validations/validates.rb:93:in `block in validates'
  from /Users/tlroys/.rvm/gems/ruby-1.9.3-p484/gems/activemodel-3.2.12/lib/active_model/validations/validates.rb:90:in `each'
  from /Users/tlroys/.rvm/gems/ruby-1.9.3-p484/gems/activemodel-3.2.12/lib/active_model/validations/validates.rb:90:in `validates'
  from /Users/tlroys/Desktop/WedProjectsFeb26/hacker_news/app/models/user.rb:4:in `<class:User>'
  from /Users/tlroys/Desktop/WedProjectsFeb26/hacker_news/app/models/user.rb:1:in `<top (required)>'
  from /Users/tlroys/Desktop/WedProjectsFeb26/hacker_news/spec/user_spec.rb:3:in `<top (required)>'
  from /Users/tlroys/.rvm/gems/ruby-1.9.3-p484/gems/rspec-core-2.12.2/lib/rspec/core/configuration.rb:789:in `load'
  from /Users/tlroys/.rvm/gems/ruby-1.9.3-p484/gems/rspec-core-2.12.2/lib/rspec/core/configuration.rb:789:in `block in load_spec_files'
  from /Users/tlroys/.rvm/gems/ruby-1.9.3-p484/gems/rspec-core-2.12.2/lib/rspec/core/configuration.rb:789:in `each'
  from /Users/tlroys/.rvm/gems/ruby-1.9.3-p484/gems/rspec-core-2.12.2/lib/rspec/core/configuration.rb:789:in `load_spec_files'
  from /Users/tlroys/.rvm/gems/ruby-1.9.3-p484/gems/rspec-core-2.12.2/lib/rspec/core/command_line.rb:22:in `run'
  from /Users/tlroys/.rvm/gems/ruby-1.9.3-p484/gems/rspec-core-2.12.2/lib/rspec/core/runner.rb:80:in `run'
  from /Users/tlroys/.rvm/gems/ruby-1.9.3-p484/gems/rspec-core-2.12.2/lib/rspec/core/runner.rb:17:in `block in autorun'

   I will give major kudos to the person who can explain to me why this attempt at custom error messages did not work
 #
Email presence now has custom error message.