engine: Support 3.1 network topologies by AttachNetwork

The patch provides support for 3.1 network topologies by
the AttachNetworkCommand, also exposed via the api by:
api/hosts/{host:id}/nics/{nic:id}/attach

The supported network topologies over a nic are:
1. Attach a VM network (with/without vlan)
2. Attach a non-VM network (with/without vlan)
3. Attach a non-VM network to a nic which a vlan is already attached to.
4. Attach a vlan to a nic which a non-VM network is already attached to.

The unsupported network topologies are:
1. Attaching any network to a nic which a non-vlan VM network is already attached to.
2. Attach a non-vlan VM network to a nic which any network is already attached to.
3. Attach a non-VM network to a nic which a non-VM network is already attached to.
4. Attach any network to a nic if unmanaged network is already attached to.

Change-Id: I9e1abe84e2877171be5af41c9bb3ab590fed3653
Signed-off-by: Moti Asayag <masayag@redhat.com>