Check if password is optional before authenticating

* authentication has issues when password is blank
* update README to reflect exposure of `#password_optional?`
* resolves #303