utf8: Inline public methods implemented through other public API
utf8: Remove .to_owned() and .into_owned()

The string traits in std no longer have that convention.
Update to recent Rust, DSTify

- DSTify WithUTF8
- No Collection
- static -> const
- #[allow(ctypes)] -> #allow[(improper_ctypes)]
Built with rustc 0.13.0-nightly (ceeac26de 2014-11-04 21:26:23 +0000)
utf8: Lessons learned from c_compat

Apply some experience gained while working on [c_compat]:

- Use a const pointer internally in UTF8Buf.
- Check the result of `libc::malloc` and use the OOM handler from
  liballoc in case of null, to match the current behavior of
  Rust core libraries.
- Use libc type aliases with `ToCStr` to match the actual definitions
  in `std::c_str`.

[c_compat] https://github.com/mzabaluev/rust-c-compat
utf8: Less gratuitous unsafety
Added .as_ptr() for UTF8Chars

If UTF8Chars is the type to represent return values and out parameters
annotated as (type utf8) (transfer none), there should be more useful
ways to access the characters.