libsyntax: convert interner into a modern struct
Change functions from taking ~str to taking &str
syntax: fix the indentation of a function
libsyntax: make enum variants take refs
libsyntax: change attr:get_attr_name to take a ref
libsyntax and librustc: minor cleanup
Alias HashMap<~str, SyntaxExtension> to SyntaxExtensions
convert syntax::attr to use @~strs
convert ast::meta_items to take @~strs
convert SyntaxExtensions's key to a @~str
librustc: convert LangItemsCollector::item_refs to take @~str as a key
librustc: convert lint_dict to take @~strs as keys
librustc: minor cleanup
librustc: convert creader and cstore to use @~strs
librustc: change check_item_non_camel_case_types to not copy
librustc: minor cleanup
librustc: change driver::session::Session::str_of to return @~str
auto merge of #4999 : erickt/rust/incoming, r=brson

This patch series is doing a couple things with the ultimate goal of removing `#[allow(vecs_implicitly_copyable)]`, although I'm not quite there yet. The main change is passing around `@~str`s in most places, and using `ref`s in others. As far as I could tell, there are no performance changes with these patches, and all the tests pass on my mac.