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.
Some of our flows may not send data from the start of the simulation. I'm not sure how this will be implemented, so I included the add_sending_flow() method in case the environment was going to add those flows later in the simulation. This may not be needed if we program the flows to start sending data at a particular time, but it certainly won't hurt.