Take a ref to an existing string/sequence in {De,En}coder.{feed,flush}

... instead of returning a newly allocated one.

Add test_feed and test_flush (behind #[cfg(test)]) to avoid refactoring
the existing tests. They’re implemented as default methods on the
traits,
which are still experimental in Rust 0.7 and need a compiler flag to be
accepted by the lint pass. They’re not experimental anymore in recent
Rust.