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
	nengo_spinnaker/utils/__init__.py
Rearrangement of builder.  Awaiting assembler.
Refactor builder and vertices.

The builder and vertices have been completely reworked to add
flexibility and group together common functionality.  The Builder is now
responsible for applying a series of network transformations which (1)
can change the connectivity of the network and (2) can change the nature
of the objects or the connections in the network.  Once built the model
is passed to the simulator.

When `run` is called the model is assembled: the IO elements are
introduced (dynamically swapping of function of time nodes where
possible), and the model is passed to the Assembler which performs
one-to-one mappings of intermediate objects to vertices.

Some further neatening is required (objects should probably be
relocated) and unit tests require updating.
Rearrange for removing pass nodes.
Include removing pass nodes in nengo_spinnaker.

Some changes for Filter vertices also.
Neaten FilterVertex code.
Add a Multicast Source to transmit packets on demand.
Merge pull request #95 from ctn-waterloo/mc-vertex

Add a Multicast Source to transmit packets on demand.
Filters can apply transform matrices.
Merge branch 'host-refactor' into transformed_filter