Simplified Keyspaces code.
Connection utilities accept keyspaces.
Connections can be split based on KeySpace
Bugfix for Ethernet output resizing.
Bugfix for Ensembles with no output.
Neaten edges, use keyspaces.

* the `pre_prepare` function for Vertices creates a collection of
  outgoing connections which can be used to write output keys or
  generate routing keys.
* `NengoVertex` now contains a default `generate_routing_info` which is
  good to use.
  * All Vertices appropriately modified
* Edges have been neatened up slightly with the move to Keyspaces.

This is a working midway step to fully specified keyspaces.
Merge branch 'master' into keyspaces2
Allow pre-setting of keyspace values.
Don't overwrite the value of the `i` field in keys if already set
Accept keyspace in __init__ of NengoEdge.
Merge branch 'keyspaces3' into builder++

Conflicts:
	nengo_spinnaker/ensemble_vertex.py
Still broken.