Test seeds are now machine-independent.

Test seeds are generated by hashing the test function name
and filename. Previously, test seeds were using the full
filename, meaning that test results were very machine dependent.
We now use the relative filename (i.e. the name within the
Nengo directory), making things machine independent.

Fixes #586.

Other changes:
- Moved `test_seed` out of `function_seed` to make
  its use more explicit.
- Added a test for the seed that should pass on all machines.
Refactored synapse classes

The major change here is to pull the logic from the builder to the
synapse classes. This makes them accessible from other parts of the
code, rather than being buried in the builder. This results in much
simpler builder code also; there is no need for build methods for
each synapse, unless some internal state of that synapse would like
to be probed (which is still easily done if desired).

The main pattern used for this is very similar to the pattern that
we use in the builder. Each `Synapse` class has a `make_filt` function
that returns a function that can be repeatedly called to filter
a signal. Its use is best demonstrated by `nengo.synapses.filt`
and `nengo.synapses.filtfilt`, which replace the old versions in
`nengo.utils.numpy`, which were specific to lowpass filters;
these new functions take in an arbitrary synapse instance instead,
which also removes the need for `nengo.utils.numpy.lti`.

Implementation-wise, the synapse models make heavy use of
`functools.partial` as a way of binding arguments that would otherwise
need to be repeatedly passed to the `filt` function. Note that
these arguments can be overridden on the partial function returned,
if desired. But in general, it's a somewhat cleaner and more idiomatic
way to achieve what we were doing in the old build methods.

Other minor changes:

- Added `Alpha` and `LinearFilter` to `nengo` namespace
- Removed erroneous `scipy.signal` import in `LinearFilter`;
  we pulled `cont2discrete` into our codebase, so it's not required
Document release procedure
Add changelog entry for v2.0.0

And add changelog entries, in general, to the long description
that will be uploaded to PyPI.
Ensure MANIFEST.in is up to date

Using the `check-manifest` script, which is now configured in
`setup.cfg`.
Remove examples/spa_sequence-Class.ipynb

This no longer reflects the way that we recommend that people
make SPA models. It also failed due to the ummagification of networks.

Accordingly, I renamed `examples/spa_sequence-Context.ipynb` to
`examples/spa_sequence.ipynb`.
Fix benchmark and optional tests.

- Added plotting to `test_thalamus`, and modified thresholds
- Pretty sure in `test_cache_performance` there's supposed to be a
  big relative timer difference using the cache...
- Pass args on in `test_decoder_solver_extra`
- Adjust tolerance in `test_compare_solvers`; some are not great
  when the signal is up near 1.
- Fix `utils.compat.is_number`; we changed `is_integer` to check for
  `np.integer`, but not `is_number`. This is required for
  `test_regularization`, which passes in a `np.int64` for `n_neurons`