[vmm][virtio] Implement proper move semantics for VirtioChain.

After a move, the source chain should return |false| for IsValid. This
ensures only one VirtioChain 'owns' a descriptor and is responsible for
returning it.

Also clarify some of the behavior of |VirtioQueue|.

Test: run_test_component device_tests
Change-Id: I3eecc2fac168b2e55e3955a01039b12294a9c551
5 files changed