Roll-up of several fixes for the latest nightly

The commit messages are pretty self explanatory; but this fixes a number of issues that have been introduced by the latest round of nightlies.

1. Certain macros need to be changed; they are parsed as expressions unless followed by a trailing semicolon.
2. TreeMap moved out of tree to `collect-rs`... however `BTreeMap` is a pretty suitable replacement; and it's almost certainly what you want to use here. (It's what `serialize::json` uses internally now.)
3. `StrAllocating` is gone and merged into `StrExt` -- however `into_string()` is also deprecated.
    * StrAllocating is replaced by the more powerful `BorrowFrom<T>`
    * A test is added for `get(&str)` (`remove(&str)` works the same way...)
    * `insert()` uses `ToOwned<String>#to_owned()` instead of `into_string()` -- they perform the same function; it just moved to a more flexible trait.
4. UTF-8 parsing functions return `Result<String, Utf8Error>` now, so to use it with your `try_option!` macro we just call `.ok()` to convert it to an `Option<String>`
5. `libserialize` has moved out of tree; I have adjusted the library imports accordingly.

Lemme know how it looks. Passes checks on my machine w/ `rustc 0.13.0-nightly (62fb41c32 2014-12-23 02:41:48 +0000)`