Added flow_id attribute to packets.

This allows hosts to pass along the packet to the correct flow.
Updated doctrings.

Changed indentation and formatting to mimic other files in our repo.
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.
Indentation nit.
Corrected not operator
Bug fix.

Did not pass environment argument correctly to internal processes.
ID changes

Changed get_host_id() method to get_id() to unify ID accessor interface.
Also, remove_flow() now takes a flow_id rather than a flow as argument.
Merge branch 'Output'
Fixed packet lengths and Python 2.7 compatibility

Data packets, acknowledgment packets, routing update packets, and FIN
packets have a fixed length of 1024, 1024, 64, and 64 bytes,
respectively.

PacketTypes enum was rewritten as an internal class of the general
Packet class. This removes the reliance on Python 3.4, so we can now
commit to developing on Python 2.7.
Committing pycache since I can't sync with master...
Removed add_sending_flow() method.

We've agreed to program flows to start at the appropriate time. Thus,
this method is not needed since the environment is not responsible for
inserting flows at the correct time.
Changed call to link's enqueue method.

The link's enqueue function accepts packets from hosts/routers. Its
transmit function, however, is internal to the link and does the actual
transmission of packets across the wire.
Matched ReceivingFlow API
Added statistics reporting function
Merge branch 'master' into Packet
Merge branch 'Packet'
Merge branch 'master' of https://github.com/kexinrong/NetworkSimulator

Conflicts:
	__pycache__/Packet.cpython-34.pyc
[Link] Basic link implementation
- enqueue(): add packet to buffers
- transmit(): transmit packets according to their timestamps
- report(): reports flow_rate, buffer_occupancy, packet_drop
Host reports send/receive rate.

Added report() method that conveys the average per-host send/receive
rate since the last report.

Measurements are given in dictionary format. I rely on an enum of
Measurements that the environment expects from all its devices.
Reordered initialization.