Added utils.graph which simulator uses

All we ever used networkx for was topographical sort.
This commit adds an implementation of topographical sort
to utils.graphs, which nengo.Simulator uses instead of networkx.

Other changes:
- Moved _init_dg to utils.simulator as operator_dependency_graph
- Refactored operator_dependency_graph slightly
- Implemented unit tests for utils.graphs
Accessor.__str__ uses StringIO.write

- Previous print_function implementation didn't work
- Added StringIO to utils.compat
- Added a small unit tests to make sure str(sim.signals) works
Merged SignalDict and Accessor

Since we don't deepcopy anymore, there wasn't much of a need to
separate the _sigdict from the accessor returned by the signals
property. So, now they're the same thing.
Added tests for SignalDict

- Removed old sim.signals test

Also:
- Switched from "name" to "key" in SignalDict
- Got rid of `getattr` in `init_signals` because all signals
  have a value attribute