Add a decode() function that looks for a BOM.

Only works with a single string entirely in memory.

This is part of #19,
although complete #19 would also support incremental decoding.
Add an EncodingObj type for Encoding trait objects with the Send bound.

Specifying the Send bound allows things that contain Encoding trait objects
to be sent across tasks.
Unfortunately it needs to be specified everywhere the &'static Encoding
type was used.
Having a central type definition will make this easier.
Merge branch 'EncodingObj' of github.com:SimonSapin/rust-encoding
s/EncodingObj/EncodingRef/g.

while &Encoding *is* referred as a trait object in the manual,
there are several meanings attached to the word "object" in Rust
so I feel the current naming is confusing at best.
I think the word "reference" would work better (hence this commit)
and made this change with SimonSapin's consent,
but feel free to challenge this decision if you want ;)
Merge branch 'decode-BOM' of github.com:SimonSapin/rust-encoding with EncodingRef changes