Encapsulate RoleId and SecretId modes (pull, provided, wrapped, absent) with value objects. Adapt AppRoleAuthentication for imperative and AuthenticationSteps authentication. Split imperative and AuthenticationSteps tests. Use the deprecated cubbyhole response unwrapping endpoint to unwrap responses. Original pull request: gh-165. Closes: gh-165.