COOPR-483 changing cluster create and delete requests to return
which required provider fields are missing if they are missing.

As part of this, removed provider fields from all requests except
creates and deletes since other operations do not require
communicating with providers. Also refactored cluster service a
bit to have a separate method for adding and validating user
given provider fields instead of baking it into other methods.
This was done in order to allow returning the missing fields.
updating docs to reflect api changes.
adding provider fields back to all cluster operation requests
since things like ssh keys may be in the provider and would be
required by provisioner to ssh to nodes and perform actions.

Restructuring ClusterService to look more like it did before,
and throwing a specific exception when fields are missing instead
of trying to return them directly. This because most of what
happens in each method has to stay there for transactionality and
cannot be broken into different phases.
add copyright
undo unintended callback changes.
fix doc issues and give more details about sensitive fields.
reference the section in the doc instead of repeating information.
Merge pull request #618 from caskdata/feature/return-missing-fields

Feature/return missing fields