[CORE] net: Make network switching SMP friendly

Current, network switching framework implements one bottom-half thread
per network switch. This approach is good on memory foot print but very
bad for network performance on SMP host because network switch bottom-half
thread and Guest VCPUs might run on different host CPUs. The current
approach also uses sleepable locks for protecting network switch which is
very inefficent.

The patch tackles above described issues and makes network switching
framework more SMP friendly, as follows:
1. Implement network switching bottom-half thread per host CPU
2. Implement per host CPU xfer list
3. Use rwlock to protect port list per network switch
4. Use per-port spinlock to serialize calls to switch2port_xfer callbacks

Signed-off-by: Anup Patel <anup@brainfault.org>