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.
Because there are a lot of repeated tests in different providers (pretty much all except for manual and local), I'm suggesting to write the test here and use it. Like this:
```go
// CommonMachineGetterTest tests the RequireSafeNetworker environ capability
// if the common case - where only the disable-network-management config flag
// and whether the machine is manually provisioned only matter.
func CommonMachineGetterTest(c *gc.C, env environs.Environ) {
    tests := []struct {
        mig state.MachineInfoGetter
        disableNetworkManagement bool
        requires bool
    }{
        {&mockMachineInfoGetter{"0", true}, true, true},
        {&mockMachineInfoGetter{"0", true}, false, true},
        {&mockMachineInfoGetter{"0", false}, true, true},
        {&mockMachineInfoGetter{"0", false}, false, false},
        {&mockMachineInfoGetter{"1", true}, true, true},
        {&mockMachineInfoGetter{"1", true}, false, true},
        {&mockMachineInfoGetter{"1", false}, true, true},
        {&mockMachineInfoGetter{"1", false}, false, false},
    }
    for i, test := range tests {
        c.Logf("test %d: machine: %q, is manual: %v, disable networking: %v", i, test.mig.Id(), test.mig.IsManual(), test.disableNetworkManagement)
        c.Check(env.RequiresSafeNetworker(test.mig), gc.Equals, test.requires)
    }
}
```

Then, in each provider, you'll only need to write a test like this:
```go
func (suite *environSuite) TestRequiresSafeNetworker(c *gc.C) {
    env := ...get environ.Environ from the provider somehow...
    statetesting.CommonRequiresSafeNetworkerTest(c, env)
}
```