Capability detection for networker

In a first approach the decision on using the standard or the safe networker has been done based on the provider type. In case of all but MAAS the safe networker has been used. Now a new environment capability has been added, so that each provider can return if it requires a safe networker for the current machine. As this today depends on the machine (local provider dislikes the changes done by the networker on the bootstap node, because it's the host system) and if the machine has been manually provisioned.

Fixes #1354365.
This is currently in discussion and I only wanted to show it. We already have the problem with facades and structs that we use "Foo" is V0 but "FooV1" as V1. It may also have been better to add a new machiner facade here but stay with a clear "GetMachines" as name. And also the top level params without versions but inside with versioned structs that can be omitted.

```
type FooRequest struct {
    V0 *FooRequestV0
    v1 *FooRequestV1
    ...
}

What do you think?
```