First host implementation.

Hosts consist of two internal processes: monitor_outgoing_packets and monitor_incoming_packets. These follow a passivate/reactivate framework through the events send_packet and receive_packet, respectively. Note that the host class itself performs the reactivations of its two internal processes. Flows and links indirectly reactivate the internal host processes through the send_packet and receive_packet API, respectively.

Is this a suitable framework for process interaction? I like this better than interruptions since one cannot pass objects through interruptions (I think). If this looks good, let's commit to this model for future process interactions.

Tests to follow upon implementation of environment, flows, and links.
Can we just use self.env.interval instead?