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.