network.get_used_iface: Don't match IP address inside a longer one

Before this change, when looking up an IP address, if an entry in the ARP
table had a longer IP address, it was used instead. For example, looking
up 192.168.0.1 gave the interface of 192.168.0.13 if this entry was printed
out before the one we looked for.

Although this commit looks too big for such a small fix, it's necessary to
add all this code because using `run_pipe(['arp -n', 'grep "%s "' % ip])`
doesn't work (note the extra space).

Besides, this commit adds a unit test to make sure nothing is broken with
this change.

Also note that without the pylint message E1103 being disabled, the error
thrown is: "[E1103, _lookup_line_in_arp_table] Instance of 'list' has no
'split' member (but some types could not be inferred)"