Fixed minor errors in a Node warning.
Improvements to pre-slicing.

- Slicing is now done on signalviews or with a PyFunc, rather
  than via the transform. This is more efficient.
- Also fixed a bug with pre-slicing. Fixes #467.
Improvements to EnsembleArray tests.

- Chose better numbers for `test_ensemblearray.test_matrix_mul`.
  The previous numbers were barely passing, and an unrelated change
  caused the test to break.
- Added a `WarningCatcher` class for recording warnings. This allows
  `test_ensemblearray.test_neuronconnection` to not show a warning
  message when running the test.
Removing unnecessary simulator delays.

- Made SimPyFunc and SimNeurons use `sets` instead of `updates`
  to remove delays.
- SimFilterSynapse is now the main source of necessary delays in
  models.
Neurons and ObjViews can now be probed.

- Slices of objects (ObjViews) are now probeable. Fixes #359 and #320.
- Also changed probes to take Neurons objects for things related
  to the neurons (spikes, voltages, etc.).
- Changed the builder to use Neurons object as the key for
  neuron-related signals.
- All neuron types now have 'probeable' attributes that determine
  what are valid things to probe on them.
Simplified Probe validation and building.

- Removed `conn_args` from Probe.
- Added validator for Probe target and attribute.
Simplified Product network output.

- There was an extra node in there, since EnsembleArray.add_output
  creates a node.
Skip long examples instead of ignoring them.

- It is now clear that some examples are being skipped during
  the tests. They can be enabled with `--optional` as before.
- Fixed a bug in `learn_unsupervised.ipynb` from previous refactoring,
  which had been missed because the example was being skipped.
Fix benchmark tests.

Tests that are run with `--benchmark` have also been failing for
some time; this fixes those tests.

In order to fix the tests, a change was made to the `int_types` in
`nengo.utils.compat`. This is due to a Python 2 / 3 difference in how
NumPy declares its integer types. On Python 3,
`isinstance(np.int64(1), int)` fails, so we add `np.integer` to the
`int_types` lists, and therefore `is_integer` works for NumPy ints
on both Python 2 and 3.
Renamed plots in `test_solvers.py`.

The plot names were never updated when the file was renamed.
Added `solver` param to probes.
Use common code for LIF rate computation.

`_LIFBase.rates` and `LIFRate.step_math` were using different code
to do the same rate computation. This commit has them share code,
uses faster code for the `rates` function, and gets rid of the
`_LIFBase` class completely to simplify things.
Unitary semantic pointers can be built again

- Made the unitary function return a copy of the vector instead
  of just the .real view.
Modified AssocMem test to use absolute times.

- This makes it less fragile if we change the way we do times.
Update sim time at beginning of step.

- This means the time nodes get is the same as the `trange` time for
  the corresponding probed values, and makes timing more consistent.
- Addresses issues discussed in #234.
Added probe label attribute.

- Also updated the probe string representations.
Fixed trange and probe length mismatch.

- The length of a probe is always the same as the length of trange.
- Fixes #497.
Fixed probing for certain sampling rates.

- Was broken for sampling rates which were not multiples of the
  simulator `dt`.
- Merged `test_sampling_rates` with `test_dts`, since `test_dts`
  now covers all cases.
Removed EnsembleNeuronTypeParam.

This was only necessary when we wanted to probe neuron stuff on the
ensemble. Now that we use the neurons object, this was unnecessary.
Added more validation to Connections

-no connections to Direct neurons (Issue #463)
-no functions on passthrough nodes (Issue #428/#485)