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.