Added dists and utils to Nengo namespace

As per the discussion in #548.

- Moved `nengo/utils/distributions.py` -> `nengo/dists.py`, which required a bunch of changes in import statements
- Imported things in `nengo/utils/__init__.py`, and imported utils in `nengo/__init__.py`, which should remove the need for some import statements in model code
  - This necessitated changing some imports in utils from absolute to relative. Not sure if this is an improvement...


This is one of the situations that I sort of understand. Basically, it works because we don't actually query `nengo` for anything when this file is interpreted. All this file does is define a function; that function is not actually executed by the interpreter, it just parses it to check for syntax errors, then makes a Code object that represents the bytecode for the function. So, it has a reference to the `nengo` module, which at interpretation time, is only half-filled. But that's okay, because we haven't queried `nengo` for anything. When we actually call the `probe_all` function, then we require `nengo` to have `Network` and `Probe` members. Which they do, since the rest of `nengo/__init__.py` has executed.

The fact that functions are parsed and not executed is also why we can shove optional dependency imports inside them; Python will parse them and make the Code object, but they don't actually get executed to evaluate the export statement until the function is actually run.

Note that this is also why it didn't work before; by doing `from nengo.network import Network` we're saying "we expect that the `nengo` module contains a `network` modules which has a `Network` class at this point", which means that we have to do those imports *before* we import this file. It's certainly possible to make sure that everything is imported in the proper order (though I suspect the resulting `nengo/__init__.py` looks pretty gross), but by doing it this way we get to avoid the problem by deferring any expectations on the `nengo` namespace.