More partitioning improvements.

* Added propogate_assignments function. This decreases the amount of
  work that we require the partitioning functions to do. The
  partitioning function can specify incomplete partitions (e.g. only
  the nodes that the user really cares about), and propogate assignments
  will take care of the rest. Also adds assignments for things like
  probes and ensembles' neurons attribute, which can be connected to but
  which we don't want to require the partition function to worry about.

* Removed the old default partition function, which partitioned
  randomly, and replaced it with a more sensible, deterministic default
  called top_level.

* Refined documentation, added some checks and warnings in
  Partitioner.__init__.