implemented simple connection slicing
Moved Neurons and ObjSlice to objects.py

- Also patched some odd issues with deepcopying np.sin on Python3
made Node dimensions mandatory

this was required for EnsembleArray slicing

also added some more tests
Simplified Connection checks
Connection.transform is now unpadded

The padded version is available as Connection.transform_full
Quick patch for test_context.test_with

- Not a permanent thing!
Ensure builder does not modify transform_full

By making it have a handle to a copy.

Also updated the Connection docstring.
add *.class to gitignore
New configuration system

Mostly for backend-specific parameters.
Made config dict a WeakRefDictionary

(see http://nbviewer.ipython.org/urls/gist.github.com/ChrisBeaumont/5758381/raw/descriptor_writeup.ipynb
for reasoning)
Changed to decorator syntax
Made config system more Pythonic

- Also added examples to docstrings
Class hierarchies handled in Config system
Implemented remove_passthrough_nodes

This can be called by builders to make the model faster.
It removes Nodes with `output is None`.
Added labels to EnsembleArray
Added generate_dot for visualizing models

Also fixed removal of passthrough nodes
Documented and added tests
Change to absolute imports
Changed generate_dot to generate_graphviz
Moved utilities to 'utils' package

This allows us to make more little utility functions
but make them more explicit by grouping them in a similar way
as the top-level nengo directory is grouped.
The top-level stays uncluttered because there's just the addition
of one folder. Seems like a good compromise!