[ELY-7] Implement BCrypt password type
[ELY-26] Transition the realm API to use a RealmIdentity which now encapsulates the identity specific operations.
[ELY-26] By switching to a RealmIdentity which defines an identity for a specific realm we no longer need to combine a Principal with a realm name in this way.