New FEC framework, with unit tests.

For review. This works, but it's not to be merged just yet because nothing uses it yet. The new post-db4o client layer will use it heavily.
I don't see why we can't call it NewFECCodec for now and then rename it later after we get rid of the old FEC codec. The whole point is to get rid of db4o, after which point refactoring will be somewhat easier. In any case most of the FEC stuff has *never* been in the database, so can happily be refactored (you get it from the ClientContext i.e. at runtime).