Now have users

Created basic user model and migration
User ought to have a password_hash
Username should be unique in database

Created activerecord unique database constraint and a test
for the constraint.  Wohoo!

Also learned that you should not use the seeds file to create
fake data in the test database. Each test should be 'atomic.'
So the test should insert any data you need, and after it is done
running it should delete any data you inserted.  You can use an
'after' thingy that is like a janitor: it cleans up after every test
you run like a janitor cleans a school after the students are gone.
Created test of bcrypt hashes.

Note: the reload function forces the object to reload info from the database.
If you don't have the reload function, this test passes, but it passes because
a bcrypt object does not equal a string, NOT because a hashed string does not equal
a string.

It's like saying that a truck does not equal a pen when what you wanted to
say was that a pencil does not equal a pen.
One command to reset the test database

Created a custom rake task to run giant concatination of four commands that
were becoming increasingly annoying to type by hand or find in my bash history:

RACK_ENV=test rake db:drop && RACK_ENV=test rake db:create && RACK_ENV=test rake db:migrate && RACK_ENV=test rake db:seed
How do I add Bycrpt to a user?

    Problem: you want a user to give you a name and password, so you can do a project with them. They are your client and you are a smart web developer.  The thing is, you won't rememeber their username and password, so you need Joe the databse to remember it for you. Joe is trustworthy, but too trusting: sometimes people steal stuff from him. So you although you trust joe, you want to make the password something only you will understand.  So, although you get the name and password from your client, when you give it to joe, you give him the client name and a super-scrambled password. yay super-scrambled password! The thing is, you are not sure how to scramble a password.  So: you give the password to a thing called Beaker the Cryptographer.  He takes the password from you.  He scrambles it.  He gives the remaining hash-browns to joe, who stores it with the username you gave it. (This is where 'password' gets transformed to 'password_hash', and the password_hash is given to the database.

    Oooh! Oooh! So you can have totally useful names when you create a user, and those names can be transformed into something more databasey by other 'beaker'-style functions. So the names you pass in to initialize an object can be completly different than the ones you give to the database, as long as your model does some translating!