use netifaces for faster IPython.utils.localinterfaces
parse ifconfig / ip addr / ipconfig in localinterfaces

also typically faster and more reliable than gethostbyname,
but lower priority than netifaces.
Merge pull request #4305 from minrk/even-more-ways-to-get-ifaces

Add even more ways to populate localinterfaces

use netifaces for faster IPython.utils.localinterfaces when availlable, 

Parse subprocess output from ifconfig / ip addr / ipconfig.
Lower priority than netifaces, but still higher priority than socket.gethostbyname.

Fallback to gethostname otherwise.

Should be much faster in worst case scenario where machine are badly configurred and can wait up to ~30s to start ipython. Slighly slower in other cases.