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.