adds BCrypt code to user model

hopefully there isn't a bunch of other changes in here. careful comparison needed.