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.
Do we really have to call things “New?” What will you call the next FEC framework? “NewFECCodec2?” And the one after that will be “NewFECCodec2EvenNewer?”

Please don’t go down that road. Pick some fancy name (animal, kitchen appliance, molecule, you name it) and use that.