SPEC: introduce "args" field and new error code
SPEC: introduce "args" field and new error code

Based on previous discussions on the CNI maintainers calls, the spec is
unclear on 1) when CNI_ARGS should be used and 2) the fact the dynamic
config can be passed in through the network JSON.

This PR makes it clear that per-container config can be passed in
through the network JSON, adding a top level `args` field into
which orchestrators can add additional metadata without worrying that
plugins might reject the additional data. It also allows for plugins to
reject unknown fields passed in at the top level.

Using JSON is preferable to CNI_ARGS since it allows namespaced and
structured data. CNI_ARGS is a flat list of KV pairs which has reserved
characters with no escaping rules defined.
CNI_ARGS may still be used by orchestrators that want the simplicity of
passing the network config JSON as specified by the user, unchanged
through to the CNI plugin. But for any kind of structured data, it's
recommended that the `args` field in the JSON is used instead.

kad/cni,achanda/cni,murat1985/cni,tangle329/cni,luxas/cni,tomdee/cni,tomdee/cni,containernetworking/plugins,containernetworking/plugins,murat1985/cni,achanda/cni,kad/cni,tangle329/cni,squeed/plugins,containernetworking/cni,mcastelino/cni,appc/cni,rosenhouse/cni,appc/cni,squeed/plugins,dcbw/cni,dcbw/cni,containernetworking/cni,luxas/cni,rosenhouse/cni,mcastelino/cni