- Only run local optimizers on the ops they are registered for.
- Fix existing optimizers in base code to register properly.
Make PatternSub register the proper trackings and fix a bunch of call sites of local_optimizer to use the proper calling form.

Most of the tests pass now, except a bunch in the Cuda backend.
Fix local_optimizer() call sites in cuda and gpuarray backends.
Add subtypes of CAReduce since the match is type-exact.
Fix wrong local spec.
Fix typo/logic problems in the treatment of local optimizations that apply to all nodes.
Fix Crossentropy local track specifier.
Make the reduce tests pass and fix reference to old alias for shape
Fix track specifier.
Change tests docstrings into comments to avoid nosetests "helpfully"
replacing the test id (module path and fct name) with the first line
of the docstring, making it hard to identify what version of the test
failed.

This is mostly for tests that are shared between tensor and cuda/gpuarray.
Remove commented calls to register_tracks since that mechanism isn't needed.
Fix the last failing test.
small crash fix
Check that classes are instances of PureOp.
Merge pull request #6 from nouiz/abergeron-eq_opt

list() the iterator for local_optimizers
Merge pull request #1669 from abergeron/eq_opt

make EquilibriumOptimizer use a dict to map ops to their nodes rather than running everything on everything.