Some code cleanups to Eutopia.

I can't stand writing new code on top of code that is a mess.
Collect Causal Maps and move Statistics to its own file
Collect Causal Maps and move Statistics to its own file
Explain Causal Maps
Log my TODO before I forget it.
Geo bugfixes

1) local farms was ignoring its "count" argument
2) Fix .id() which was accessing .fields which a long time ago got renamed to ._source, and move it into core pygdal
3) Make pygdal cache properties at boot, mostly so that tab-completion and dir() inspection works sensibly.
Document what (I believe) the model state that I'm going to try to get logging somewhere and exported to the web is.
Geo bugfixes; THIS IS ONLY A ROUGH PATCH, NOT A FIX.

The last commit (naturally) introduced state, which now I need to track
I am not comfortable with this patch at all. I should have a .fields entry or something that handles this
the way SQLAlchemy has a syntactic sugar .tables: existing, tab-completable, but separate to avoid polluting and crashing the main class.
first draft of a really sketchy time-stepped model logging API built on dataset
clean up the monkey-patching in the last one

The bug was that dataset.Database is *actually* initialized to dataset.persistence.database.Database
and the same so dataset.Table. So monkey patching dataset.Table doesn't change what dataset.Database uses.

Using __func__.__globals__ did make me feel a bit like god, though.
Improve the model logger example.
Discovered by digging into SQLAlchemy that my "update the schema" line wasn't actually doing *updates*
Make folder layout prominent
Merge branch 'master' into databased
Discovered SQLite update hooks, and improved the replication docs in their honour.