Un-integrated draft rewrite of Keyspaces.

This code presents a rough-draft of the new hierachical keyspace system which
has not been flake-8'd, cleaned up or integrated into the larger system. Tests
do have 100% coverage, however...

Coming soon:

* Nicer way to access field masks than defining a unique tag
* Better documentation
* Cleaned up code
* Flake-8-ness
* Integration into wider codebase
Add ability to get keys/masks by field.
Improved Keyspace documentation.
Initial Flake-8 pass.

Initially just getting Flake-8 to pass before performing any meaningful cleanup.
Refactored Keyspace internals.
Added heirachical tag assignment to keyspaces.
Add __eq__ Keyspace.
Flake-8

O how we love ye.
Fix Keyspaces with assign_fields().

This makes behaviour of Keyspaces somewhat easier to understand as fields must
be explicitly fixed.
Part-finished Keyspace integration.

Not inculded:

* Ensuring keys are specified in one pass and then the fields are fixed in
  another.
* Unit test updates
Merge branch 'development' into new_pacman2_simulator_keyspace

Conflicts:
	nengo_spinnaker/builder.py
flake8
Complete keyspaces integration.

- Fixes tests.
- Remove `n_system' field.

@mossblaser to do, add new system type?
Merge branch 'development-keyspaces' into development