Use bcrypt's public cost attr, not internal constant

See:

- https://github.com/codahale/bcrypt-ruby/pull/63
- https://github.com/codahale/bcrypt-ruby/pull/64
- https://github.com/codahale/bcrypt-ruby/pull/65
Merge pull request #12339 from tjschuck/bcrypt_cost_attr

Use bcrypt's public cost attr instead of internal constant
simplify each method.

Stop writing terrible code Aaron.  This is Ruby, not Scheme