Fixed label overwriting in spa.Modules
Added cortical action for "a = b * c"
Added action_build.py to reduce duplication

Refactored thalamus.py and cortical.py to use action_build.py.
Adjusted test_memory bounds

- Fixed logic error in test; adjusted bounds
- Added comments explaining bounds on tests
Adjusted radius so Buffers have radius 1.0
Fixed cleanup error for plt fixture

If a test had failed before the plotting commands, pytest would
report an additional error in cleanup because `plt.tight_layout`
fails when there are no axes. This commit adds a check for no axes
before calling tight_layout; the empty figure still gets plotted
though, as that doesn't fail.
Remove FeedbackGatedMemory

In the FeedbackGatedMemory, an ensemble is put in the feedback loop
of the integrator. When input is presented, the ensemble in the
feedback loop is gated. While this can work, it requires a lot of
tweaking of `synapse` parameters and scaling constants.

It was originally implemented due to bugs in previous version of
InputGatedMemory; however, those bugs have been fixed, so users of
FeedbackGatedMemory should be able to safely switch to using
InputGatedMemory.

Other changes:
- A bit of cleanup in InputGatedMemory. Removed unnecessary
  input and output nodes.
- Refactored test_workingmemory.py and shortened the simulation time
Relaxed bounds for SPA tests

Specifically for test_run_decay and test_convolution,
which were newly added. In both cases, I also added some
plots to figures out what was happening, and I used
the new `seed` fixture for seeding.
Improved LIF integration scheme for accuracy.
Split up builder.py

Split nengo.builder into a subpackage in order to organize
all of the stuff that was accumulating in there.
There may be a slight increase in the number of lines of code,
but I think this makes reading the code a lot easier, and future
edits to the builder will be a lot easier to merge/rebase.

Note that none of the actual logic changed; this was all code moves,
and import changes in order to get everything working.

One minor naming change: I removed the _synapse suffixes on the build
functions in nengo/builder/synapse.py. It should be clear that
those functions refer to synapses.
register_builder now a decorator

What you used to do with

    register_builder(build_fn, nengo_class)

should now be done with a decorator

    @Builder.register(nengo_class)
    def build_fn(...

Registering two build functions for the same nengo_class
will keep the most recently registered, and will raise a warning.
Added model.build for easier building

Now, instead of

    Builder.build(..., model, config)

it's possible to do

    model.build(...)

which is much shorter. The config is no longer passed into all
of these functions, as we don't use it yet; instead, the
build_network function stores its config on the model, and restores
it to its previous state at the end.
Sign CONTRIBUTORS.rst.
Implement class for basic decoder caching.

The decoder solver used is not cached!
Cache solver info.

This is done as pickle which can be quite slow. However, it should not
contain very large arrays and using the the numpy io functions would
complicate matters as some own storage format has to be implemented
for the dict.
Add log messages and warnings.
Do not overwrite default arguments in caching.
Test caching with E argument to solver.
Use caching if seed is fixed.

But disable cache in tests.

Also added the ability for caches to be read-only. New decoders
won't be saved, but if they exist, they'll be loaded.
Add name to version module.