Initial montioring setup.

I registerd values to monitor and implemented helper functions to do so.
Edited network to add addresses to links (in order to uniquely reference
them) and fixed bug in test.MonitoredEnvironment.
Initial implementation of graphing.

The values returned by network.Network.simulate are processed in test.run
and then graphed in test.graph. The code has yet to be tested and requires
more documentation.
Graphing with minor errors fixed.

Fixed minor errors so everything compiles, but still have yet to fully test
graphing.
Fixes indentation error

Reno.get_departure was defined withing Reno.acknowledge because of an
indentation error
Changed link implementation

I modified the link implementation in an attempt to introduce queueing
delay into the system.  For some reason, there is still no queueing
delay (round trip times are equivalent to the propagation delay of the
path), yet the values I got for queue length were nonzero.
Updates monitoring, links, graphing

Monitoring is now done by reporting instead of sampling.  Simulation
time is now interpreted as nanoseconds, in order to gain the resolution
necessary to support queueing delays.  Links now actually respect
capacity contraints.  Changed graphing (added test.graph_data), so that
we can test graphing without hacing to run an entire simulation
Finish table for routing updates has proper init.

Finish table now reset to contain a false converged flag for each transport
on a router that's not connected to a host.
Fixed bug in calculating cost for routing updates.

Also added logger statements to make it easier to debug routing. This
branch is intended to figure out the changes required to make routing
work.
Routing slightly fixed

There's traffic on the links which were previously unused, but it's very
low
Merge branch 'routing_debug' of github.com:WalkerMills/network_simulator into routing_debug

Conflicts:
	process.py

Updates Router.begin to not modify cost in place, and updates
MonitoredEnviroment to take the average of values received at the same
time, instead of the maximum
Merge branch 'routing_debug' into graphing
Updated TCP Reno class

I changed Reno.acknowledge to respond to ACKs based on which phase of Reno the
flow is in. This meant adding attributes for slow start, congestion avoidance,
and fast recovery phases. I also changed Reno.send so that each transmitted
packet has a timeout associated with it, and this timeout can either be
terminated when the packet is acknowledged or expire and cause a timeout.
Test case 1 working with FAST TCP

The link capacities defined in the test cases were 8x too high, I
erroneously assumed they were given in MBps, not Mbps.  Once that was
fixed, FAST TCP turned out to be working, although the alpha value I was
using was too large (by about 25%).  Monitoring of transmission rates
still needs to be fixed, as it currently displays data much too densely.
Merge branch 'graphing' of github.com:WalkerMills/network_simulator into graphing
Fixed minor errors in TCP Reno.

Haven't fully debugged TCP Reno, but fixed small bugs which caused
runtime errors.
Fixed flag-setting errors in TCP Reno
Lowers logging levels

I had previously used the logging.WARNING level to suppress most of the
logger messages, which were at the logging.INFO level.  I downgraded the
levels for all of the messages to logging.DEBUG, and made the default
logger level logging.INFO.  Also modifies the alpha values for test case
1 and 2.
Merge branch 'graphing' of github.com:WalkerMills/network_simulator into graphing
Debugged TCP Reno to properly go between phases.
Merge branch 'graphing' of https://github.com/WalkerMills/network_simulator into graphing

Conflicts:
	process.py