code: @SuppressWarnings("WeakerAccess")
      public AuthenticationRequest login(@NonNull String usernameOrEmail, @NonNull String password) {
          Map<String, Object> requestParameters = ParameterBuilder.newBuilder()
                  .set(USERNAME_KEY, usernameOrEmail)
                  .set(PASSWORD_KEY, password)
                  .setGrantType(GRANT_TYPE_PASSWORD)
                  .asDictionary();
  
          return loginWithToken(requestParameters);
      }
docs: Log in a user with email/username and password using the password grant and the default directory
  Example usage:
  <pre>
  {@code
  client.login("{username or email}", "{password}")
  .start(new BaseCallback<Credentials>() {
  {@literal}Override
  public void onSuccess(Credentials payload) { }
  
  {@literal}Override
  public void onFailure(AuthenticationException error) { }
  });
  }
  </pre>
  
  @param usernameOrEmail of the user
  @param password        of the user
  @return a request to configure and start that will yield {@link Credentials}