[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.
[ELY-26] Minor typo.
[ELY-39] Ensure algorithm names come from the password interfaces and not the implementations.
[ELY-40] Split out the Base64 handling into it's own utility class.
Javadoc claims a NoSuchAlgorithmException will be thrown, not a return of null.
Elsewhere we expect the service type to be 'PasswordFactory', this does appear to make more sense than 'Password'