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.