Reduce code duplication in cache tests.
Add DecoderCache.remove_orphans

This function removes any *.npy or *.pkl files that don't have a
corresponding pair. This can occur if Nengo is interrupted when either
creating or removing files in the cache.
Handle deletion of files during cache shrinkage.

Fixes #557.
Minor progress bar tweaks

- The default progress bar is only used if `True` is passed in to
  the `ProgressTracker` (or the `wrap_with_progressupdater` function).
- If `False` is passed to `wrap_with_progressupdate`, `NoProgressBar`
  is used.
- `ProgressBar`s now accept a string which represents the task being
  tracked. It selfishly defaults to "Simulation", as that's what we
  use it for, but it'll be handy to have this if we ever track the
  build process also. The default message when a progress bar finishes
  is now "{task} finished in {time}" rather than "Done in {time}".
- The `AutoProgressBar` now updates as usual if the task is finished.
  This is so that, even if the bar isn't initially shown and updated,
  there's still a handy message that the simulation finished.
Removed magic from Network.

Specifically, removed the NengoObjectContainer metaclass, and the
Network.__new__ function. This means that all Network subclasses
need to explicitly take in and deal with `label`, `seed`, and
`add_to_container`, and have to explicitly do `with self:`
if they make any Nengo objects. These changes end up being
alright for normal networks, but a little cumbersome
for SPA networks.

A few other minor changes:
- Made Network.add a staticmethod instead of a classmethod.
  The class being used should always be Network, I think.
- Now using the `Choice` distribution in `SPA.Compare`
  (missed it when converting the others...)
- Switched all of the SPA tests from subclassing to
  using a context manager.
InstanceParams falls back to ClassParams

Instead of `param.default`. Includes test for this.
Converted network subclasses to functions

In general, I think that the resulting functions are easier to read
than their networks subclass equivalents.

Of note is the pattern of accepting a premade network, or
making a new one if none is passed. This has a few concrete benefits.
One is that the BG / Thalamus doesn't need to accept label, seed,
and add_to_container arguments because if you want something other
than the default, you just quickly make a network with those values
and pass it in (this is done in `test_actionselection.py`).
Similarly, if you want to change something like the max firing rates,
you can make a new network, change the max firing rates in that
network's config, and it will just use them.

Other changes:
- Added the `nested` function to `nengo.utils.compat`. This is the
  only way we can do nested context managers in a way that works
  on Python 2.6 and above; if we don't support Python 2.6 then we
  don't have to include this function.