Missed importing mysql/.gitignore
Record some scrap papers and talks on databases I've found this week.
And Repast, because we can't avoid it.
ugly file of bookmarks
Comment activity.py

It took me a while to figure out what aggregate_measures was,
and how deeply tied to get_product() it is.

Also I tidied up (in my very unhumble opinion) what "Normal" is.
Small cleanups to SimulationLog
Repairs for the sake of getting this working enough to do the logging.

This commit is not nice.

- put the old Normal class back for because I apparently missed a __mul__ case
- switch to using ogr.Feature directly (or, directly enough)
- sketchy segfault-fixing "(self.lat, self.long)" tuple
Pull out a further Table superclass

so that:
 for the extraneous tables that *don't* log time-stepped data,
 you can still use the same same table-defining API
python2 fix
clearer error message

it's likely that a bad table name will crop up deep in the bowels of your
simulation, *not* where you define the tables. This change makes it
instantly obvious what the bug is.
Think better of auto-creating tables.

..because foreign keys and whatnot can break them if the whole schema isn't done at once.
Think better of create_tables

- Turns out that create_all handles the "table already exists"
  case by default.  I turned on checkfirst anyhow because
  "explicit is better than implicit" in this case.
- use a transaction
Log to a database!!
Catch an oversight: don't double-write the equipment table;

warn() on it and standardize on just warn() while I'm here.
Support 'eutopia.py path/to/logdb.sqlite'

this change showed some oversights, like having to filter by run_id
plus other assorted tidies