Split up builder.py

Split nengo.builder into a subpackage in order to organize
all of the stuff that was accumulating in there.
There may be a slight increase in the number of lines of code,
but I think this makes reading the code a lot easier, and future
edits to the builder will be a lot easier to merge/rebase.

Note that none of the actual logic changed; this was all code moves,
and import changes in order to get everything working.

One minor naming change: I removed the _synapse suffixes on the build
functions in nengo/builder/synapse.py. It should be clear that
those functions refer to synapses.
register_builder now a decorator

What you used to do with

    register_builder(build_fn, nengo_class)

should now be done with a decorator

    @Builder.register(nengo_class)
    def build_fn(...

Registering two build functions for the same nengo_class
will keep the most recently registered, and will raise a warning.
Added model.build for easier building

Now, instead of

    Builder.build(..., model, config)

it's possible to do

    model.build(...)

which is much shorter. The config is no longer passed into all
of these functions, as we don't use it yet; instead, the
build_network function stores its config on the model, and restores
it to its previous state at the end.
Sign CONTRIBUTORS.rst.
Implement class for basic decoder caching.

The decoder solver used is not cached!
Cache solver info.

This is done as pickle which can be quite slow. However, it should not
contain very large arrays and using the the numpy io functions would
complicate matters as some own storage format has to be implemented
for the dict.
Add log messages and warnings.
Do not overwrite default arguments in caching.
Test caching with E argument to solver.
Use caching if seed is fixed.

But disable cache in tests.

Also added the ability for caches to be read-only. New decoders
won't be saved, but if they exist, they'll be loaded.
Add name to version module.
Use system specific cache directories.
Add possibility to get cache size.
Add function to limit items in cache.
Add documentation for caching classes.
Add test for cache invalidation.
FingerPrint class instead of pickle
Handle corrupted decoder cache gracefully.
Moved paths to nengo.utils.paths
Implement RC settings.

Use the RC settings for determining if cache will be used.