Neaten Simulator, Ethernet, add some docs

__This bases off @mossblaser's #82__

In short:
* Pulls all of the PACMAN code out of `Simulator.run` and sticks it in `Simulator._prepare_model_for_execution`
* Adds some better `stop` handling to Ethernet
* Causes `Simulator.run` to raise a `NotImplementedError` if `run` is called twice without an intervening `reset`.
* Adds `reset` to the simulator to maintain the semantics of the Nengo simulator.
* Adds documentation and comments...
Sadly Matplotlib doesn't do generators, sounds like raising `NotImplementedError` is the way to go...