I think we need to remove `setProvider`:

You cannot change the provider of an existing provider-based Directory.  So this method is only 'legal' if you're going to create a brand new directory.

So, if we keep this method, we should assert that the underlying directory does not yet have an `href`, and if so, throw an IllegalArgumentException.  But this is brittle - people could call it sometimes, but not other times - not nice semantics.

We should remove `setProvider` entirely, and add a new `CreateDirectoryRequest` concept that allows you to specify a Directory at creation time.

For example:

```java
CreateDirectoryRequest request = Directories.newCreateRequestFor(aDirectory)
    .forProvider(Provider.GOOGLE)
        .setClientId(clientId)
        .setClientSecret(clientSecret)
        .setRedirectUri(redirectUri);

Directory directory = tenant.createDirectory(request);
```

I still have to work out the Java API design for this, so please don't make any edits just yet.