icmp: modulize, move result macros to xping.h
icmp: module initialization
icmp: set up probe targets in module
icmp: use probe_send in module for sending probes
icmp: import write_packet helper functions
icmp: import read_packet helpers functions
icmp: perform initial resolving outside module
main: rename write_packet and write_first_packet
main: rename activatetarget and deactivatetarget
main: rename findtarget
main: rename mark-, resolve-, and add-target
main: rename resolvetarget
main: rename ui functions
main: clean module interfaces and header files
icmp: assume hashing and lookup responsibility

Hashlookups based on source address is a requirement of the icmp probe
(to pair reply packets with their targets). Hash should by maintained
by the "module". This requires knowledge of the resolving process to
put/pull targets to/from the hash accordingly.
ui: improve relative positioning

Let move() do all moves and assume responsibility for updating
cursor_y. The exception is establishing a reference point before full
updates or window change.

When doing relative moves i.e. not using move(). Use "cursor move"
rather than scroll.

Make sure cursor_y get initialized and screen bottom only is cleared on
full updates.
bug: duplicate target text isn't displayed

When resolving probes wit duplicate addresses text isn't display due to
relative redrawing. Have target_is_resolved request a full update to
flush out any potential duplicate texts.
main: don't reschedule probes on different fd

libevent doesn't support fd when neither EV_READ nor EV_WRITE is
specified. So rescheduling is meaningless.
main: diagram of control flow
ui: remove ncurses tag

Didn't provide useful information and cluttered the code.