Add code for getting and setting neighbor status

Since the neighbor status 32 bits are split up, functions for
easily masking the bits are necessary.

resolve_neigh() is used to take two struct hrdw_addrs and decide
which has more relevant information. We could have two duplicate
struct hrdw_addrs when, for example, processing a neighbor list
and trying to add a new hardware address to the neighbor list.

update_neigh() is used when we have the link-layer address of a
neighbor, but not a reference to its struct hrdw_addr. This
function can find the correct struct hrdw_addr and update its
status.