netdev-linux: Read packet auxdata to obtain vlan_tid

If VLAN acceleration is used when the kernel receives a packet
then the outer-most VLAN tag will not be present in the packet
when it is received by netdev-linux. Rather, it will be present
in auxdata.

This patch uses recvmsg() instead of recv() to read auxdata for
each packet and if the vlan_tid is set then it is added to the packet.

Adding the vlan_tid makes use of headroom available
in the buffer parameter of rx_recv.

Signed-off-by: Simon Horman <horms@verge.net.au>

--
v3
* Remove unnecessary cast
* On success return 0 and increment buffer->size
* Limit to reading one VLAN from auxdata

v2
* Updated to use eth_push_vlan() to efficiently push the VLAN
  if headroom is available. This is possible now there
  is a struct ofpbuf * to work with.
* Various cleanups