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.