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.
> Caches and creates individual codec engines

Why cache the codecs in the first place? Does any benchmark indicate it's worth the effort?