Documentation needs some improvement
The API has been simplified to only allow for ONE topology per
NetworkEnvironment.
This covers the main use case, and simplifies the code.
The web server is included as a submodule.
The dependencies for the web (tornado) are not installed by default, but they
can be installed as an extra:
```
pip install soil[web]
```
Once installed, the soil web can be used like this:
```
soil-web
OR
python -m soil.web
```
There are other minor changes:
* History re-connects to the sqlite database if it is used from a different
thread.
* Environment accepts additional parameters (so it can run simulations with
`visualization_params` or any other in the future).
* The simulator class is no longer necessary
* Logging is done in the same thread, and the simulation is run in a separate
one. This had to be done because it was creating some problems with tornado not
being able to find the current thread during logs, which caused hundreds of
repeated lines in the web "console".
* The player is slightly modified in this version. I noticed that when the
visualization was playing, if you clicked somewhere it would change for a
second, and then go back to the previous place. The code for the playback
seemed too complex, especially speed control, so I rewrote some parts. I
might've introduced new bugs.
Now the environment does not deal with history directly, it delegates it to a
specific class. The analysis also uses history instances instead of either
using the database directly or creating a proxy environment.
This should make it easier to change the implementation in the future.
In fact, the change was motivated by the large size of the csv files in previous
versions. This new implementation only stores results in deltas, and it fills
any necessary values when needed.