Refactor fencing

Improve the modularity of flag processing by having each fence
contribute to a collection of flag processors during static
initialisation. Each flag processor in the collection is driven from
the main program at two callback functions: the first contributes the
fence's flags to a flagset; the second creates a Builder for the fence
based on the flag values and stores the Builder in a BuilderRegistry.
Creating a Builder can fail and this is reported to the caller. The
resultant BuilderRegistry contains a Builder per type of fence (of
which there is currently one - networking).

When a container is created, each Builder in the FenceRegistry is
called to build the corresponding Fence from the container
specification. Each resultant Fence encapsulates a container-specific
set of resources for the relevant type of fence. Fences may be
persisted to JSON during snapshotting and rebuilt from JSON (via the
Builder's Rebuild method) during recovery.

Apart from JSON marshalling, each Fence can configure the environment
of a process to be run inside the container, populate the relevant
sections of a container info structure, and, when the container is no
longer needed, can be torn down via its Dismantle method.

Fence type specific packages reside subdirectories of the fences
directory which also contains a fences package with common types such
as Builder, Fence, and BuilderRegistry.

In addition, for consistency with other environment variables, to
clarify the meaning, and to avoid confusion with a net out parameter
of the same name, the NETWORK environment variable is renamed to
network_cidr.

Signed-off-by: Julian Friedman <julz.friedman@uk.ibm.com>
Signed-off-by: Steve Powell <spowell@pivotal.io>

[#80635872]
Create container may specify a subnet and a specific container IP

The specified container IP may not equal the gateway or broadcast IPs
otherwise a corresponding error is returned.

Signed-off-by: Steve Powell <spowell@pivotal.io>

[#80635872]
Merge branch 'master' into static-ip-take2-#80635872

Conflicts:
	integration/networking/ip_test.go

Signed-off-by: Steve Powell <spowell@pivotal.io>

[#80635872]
Merge branch 'static-ip-take2-#80635872'

[#80635872]