Vhost - RX/TX rework

The enqueue and dequeue functions have been reworked for better utilization of
the cache. Critical tasks such as memcpys have been split in to separate loops.
Access to the used ring is also done in bulk to minimise cache contention
from the guest. This results in a performance increase of above 20% for
userspace vhost.

Change-Id: I6e0d5400b279b76f041b9001a2a43af635877e64
Reviewed-by: Mark D. Gray <mark.d.gray@intel.com>
Reviewed-by: Stokes, Ian <ian.stokes@intel.com>
Signed-off-by: Anthony Fee <anthonyx.fee@intel.com>
Signed-off-by: Nicolas Pernas Maradei <nicolasx.pernas.maradei@intel.com>
Vhost - Descriptor Handling

An issue was discovered where Windows guests were not being handled correctly.
This was down to chained descriptor handling in the vhost enqueue/dequeue
code. This issue has been resolved but depends on the Vhost- RX/TX rework patch.
Performance does drop as some optimisations needed to be reversed in order
to handle the descriptors correctly. This has been tested with both Linux
and Windows guests.

Depends on: Vhost- RX/TX rework patch

Change-Id: Id338ec6f36f0a5009bb0ba3773a63e38208377df
Reviewed-by: Mark D. Gray <mark.d.gray@intel.com>
Reviewed-by: Stokes, Ian <ian.stokes@intel.com>
Signed-off-by: Anthony Fee <anthonyx.fee@intel.com>
Signed-off-by: Nicolas Pernas Maradei <nicolasx.pernas.maradei@intel.com>