Experiments towards getting the Ecology working

Main issue is that TypeTag isn't implemented, and only bits of Class
are.  Not yet sure I can make this work.
Updated client-ecology to master
Beginning to make the Ecology port real

Having come to the conclusion that I can come Close Enough, let's begin
refactoring the core of Ecology into Shared.

Major change: we're going to use ClassTag instead of TypeTag where
possible.  This is technically a little weaker, but good enough for most
purposes, and works in Scala.js where TypeTag does not.  We will only
use TypeTag where necessary, and those aspects will have to differ on
the two sides...
Genericized the Ecology

Not there yet, but seems to be compiling and working again.  Big
refactor of the Ecology, to separate the "generic" concepts from the
Querki-server specific ones.  Very hairy stuff.

Most important: I believe the "generic" parts (mostly) no longer rely on
TypeTag.  So there is a chance this might mostly work on the client.

Needed to add a bunch of apparently-spurious "with EcologyMember"s to
several Ecots to get them to work.  This requires further thought.

Note that SpaceState is a weird special case: had to change its
signature to fix some recursive type loops, since the main Ecology
classes depend on it.
Removed some spurious TypeTag dependencies
Moved core Ecology code to Shared

This now matches the theory fairly well.  Now, we'll see if it actually
works...
Ecology proof of concept on client

Nothing fancy, but it seems to work!
Fixed Ecology tests to match the refactor
Merge client-ecology branch into master

Refactored the ecology, put most of it into shared, and did some simple
proof of concept of a client-side ecology.
For some reason, the Exceptions change didn't take before