Python 2.6 fixes

1. Counter was introduced into `collections` in Python 2.7,
   so on 2.6 we rely on the backport in PyPI.
2. captureWarnings was introduced into `logging` in Python 2.7,
   so we just don't do this in Python 2.6.
Added plt fixture for easier test plotting

Rather than creating at Plotter object manually,
this commit makes it possible to add a `plt` argument
to a test function, which is `matplotlib.pyplot` if
plotting is enabled, and a mock object if plotting isn't
enabled. It figures out a reasonable filename from the
arguments to the testing function.

Additionally, the Plotter now automatically saves the
current figure and closes all open figures in
__exit__. If the automatically generated name is not
sufficient, it can overridden by setting `plt.savesas`
to a string. If saving the plot isn't desired, saving
can be suppressed by setting `plt.saveas = None`.

Test cases that plotted have all been changed to use
this new interface. There's a heck of a lot less boilerplate
now, which should make it easier to add in quick plots to
unit tests.
Travis-CI supports Python 3.4 now
Fix TravisCI matplotlib backend problem

It tried to use TkAgg by default, which fails in their environment.
Fixed by dropping a `matplotlibrc` in the current directory before
testing starts -- this keeps the fix local to TravisCI and doesn't
affect any other test running.
Mark spa/test_thalamus as optional

It's causing TravisCI to time out.
Fixed erroneous uses of `nengo.Simulator` in tests.

- Should always use `Simulator` or `RefSimulator` pytest args.
Fixed circular convolution routing
Cleaning up some tests.

- Revised the `allclose` function to be more easily useable.
- Relaxed tolerances in some tests for Nengo OCL, since it is
  using 32-bit floats.
- Made some tests in `test_ensemble` shorter, for Nengo OCL.
`test_shortfilter` now tests what it purports to.

It said it tested connection filters less than `dt`, but didn't
actually do this.
Removed uses of `recwarns`.

Replaced them with `utils.testing.warns`. This is better since the
warning is actually caught so it doesn't appear in test output.
Removed ProdUpdate.

- It was only used in a dummy learning rule update and some tests.
- Added a test for node time.
- Changed some builder tests to use `nb` instead of `nengo.builder`.
Fixed up `test_unsupervised_learning_rule`.

- Made it deterministic.
- Made it actually test both Oja and BCM.
Minor fixes to ops and learning rules.

- Added `as_update` option to `DotInc`.
- Cleaned up SimOja and SimBCM.
- Cleaned up operators slightly by giving `sets, incs, reads, updates`
  a consistent order in the code (the same as the order in which
  they're performed).
Scaling Oja rate by dt.
Changes to get learning working in NengoOCL.

- Doing outer products with ElementwiseInc instead of DotInc.
- Fixed up some learning rule tests to make plots.
Making all tests deterministic.

- I added the `seed` and `rng` args for tests, so that it's easy
  to get a unique seed and random number generator.
- I switched over the non-deterministic tests that I found to use
  these new arguments. I also switched some of the deterministic tests
  to use them, just to show how they should be used.
- At some point, I think we should switch all tests to use them. This
  would make it very easy to do things like switch all seeds in all
  tests and see if anything breaks (to make sure no tests are seed
  dependent).
Changed order of operations in PES.

- For compatibility with NengoOCL.
- The resulting operation is also more efficient in terms of both
  computation and memory.
- Also made DotInc do matrix-vector multiplies only, for compatibility
  with NengoOCL, and changed the BCM and Oja builders accordingly.
Implemented nengo.utils.compat.ensure_bytes

This ensures that the passed string is encoded; that is, it is not
a unicode string. In Python 2, this means that `unicode` instances
are encoded. In Python 3, this means that `str` instances are encoded.
If the passed object is already a bytes object, nothing happens.
Using hashlib for test seed creation.

This makes seeds deterministic in both Python 2 and 3
(`hash` is randomly seeded by default in Python 3).

- Also added a global `test_seed` that can be used to change seeds
  for all tests.
- Fixed some tests (in `test_distributions`) to work with new seeds.
Added probes for learning rules.

- Signals in learning rules can now be probed.
- This required adding a learning_rule attribute to Connection similar
  to the neurons attribute on Ensemble.
- LearningRule was renamed to LearningRuleType to make space for the
  new LearningRule class (that Connection.learning_rule returns).