Removed `_in_stack` since it was slow.
Fix Python 2.6 support

The latest version of IPython, 2.0.0, dropped Python 2.6 support.
We fix this by splitting up the test requirements into the usual
requirements-test.txt, and requirements-test-py26.txt,
which is Python 2.6 specific. Both .travis.yml and tox.ini
are updated to use this new file.

Other changes:
- Removed apt-get install libzmq in .travis.yml
  since we don't use it anymore.
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.

Other changes:
- Removed old sim.signals test
- Added tests for SignalDict
- Switched from "name" to "key" in SignalDict
- Got rid of `getattr` in `init_signals` because all signals
  have a value attribute
Made shape array 'int' to suppress warning
Used metaclass magic instead of magic functions

We've been using the special function ``make`` in networks,
and started using ``initialize`` in other objects recently.
This moves the things in those methods back into __init__
and instead makes sure that the right things happen by
controlling object creation through new metaclasses:
NetworkMember for NengoObjects and NengoObjectContainer
for Network.

Other changes:
- Added with_metaclass function to utils.compat,
  as Python 2 and 3 have different syntax for this.
- Added Network.add which encapsulates some of the logic
  that used to be NengoObject.__init__
- Made NengoObject.__str__ a bit safer and easier to read
Rearranged the classes in objects.py
Removed add_to_network methods

- The logic is now contained in Network.add.
- Added a new `objects` dictionary which essentially maps
  class -> list containing instances of that class.
  - This is to get around an if isinstance... chain.
Rearranged methods in Network
Added a with_self decorator in utils.network

This allows networks to explicitly mark methods that
should be executed in its own context.
See EnsembleArray.add_output for example usage.

Other changes:
- Added documentation to the Network class
- Added utils.decorators so we can make better decorators
  - Added tests (which serve as examples) to
    utils.tests.test_decorators
- Added test_network that ensures that the nengo objects
  created in EnsembleArray.__init__ and EnsembleArray.add_output
  are going to the correct place
- Slight modification to Network.__str__ (seeing "None" tricked
  me into thinking that the EnsembleArray was None, not just that
  the label was None)