Moved in_stack to utils.inspect
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 the classes in objects.py
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 utils.decorators so we can make better 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)