Bug fix for direct-mode connections.

- Addresses problem when setting both `function` and `transform`
  in direct-mode connections.
- Fixes #464
Validation error fix
Added myself to contributors
Update node.py

Made a better warning and improved the doc strings
Better string representations

- Better `str` representation of NengoObjects, using triangle
  brackets and a more "English language"-like style.
- Also use the string representation throughout the builder,
  rather than just the label (since the label is often None).
Added string examples notebook

This gives us a place to confirm string representations
whenever we want. Easy to include in docs, if desired.
Added Choice distribution.

- The same as `np.random.choice`, but can take vector values.
- Partially addresses #213.
Used Choice distribution wherever possible

Notably, in the Product network (and by association,
the circular convolution network), and multiplication examples.

This also fixes an issue with the Choice distribution:
the sample method should take in a `d` argument, which is the
dimensionality of the output. In most distributions, this
affects the sampling process; here, it doesn't, but it needs
to be included for compatibility. To ensure compatibility,
we instead use `d` to ensure that the options passed in are of
the correct dimensionality (tested in test_distributions.py).

Also, a quick fix to the Product network's test_sine_wave function;
the desired result was outside of the representational range
(could be as high as radius * radius), so reduced the size of the
representations to np.sqrt(radius).
removed rng requirement from build_linear_system

and the one place that called it.
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.