authenticates users with encrypted passwords

Adds salt and password columns to user table. It also and creates random salts and stores encrypted passwords upon user creation.
The advantage of this is that the ids can be generated by the front end, removing the need for them to wait for the server to return the newly created user's id.