libcore: remove default to_str implementations for pointer types

These couldn't be overridden and so ended up being quite restrictive. This has
the side effect of changing the stringification of ~vecs, but nothing in
relied on this. Closes #4869.
libsyntax: Convert ast::attribute_ to store a @meta_item
libsyntax: add explicit modes where required to copy strs/vecs
libsyntax: minor cleanup
libsyntax: convert visit to pass ty_params by reference
libsyntax: progress on making syntax::visit vecs_implicitly_copyable-free
libsyntax: make lexer vecs_implicitly_copyable-free
Fix typo in grammar: underscore, not minus, can appear amongst hex digits.
libsyntax: fix the span in parse_bottom_expr's INTERPOLATED handler
libsyntax: is_keyword should take a &~str
libsyntax: change eat to take a &token
libsyntax: change flip_delimiter to take a &token::Token
libsyntax: change expect to take &token::Token
libsyntax: minor cleanup
libsyntax: change token_is_{word,keyword} to take &Token
libsyntax: add some explicit copies
libsyntax: change parse_trait_ref_list to take a &Token
libsyntax: change attr::parse_seq_* to take &Token
libsyntax: change parse_matcher_subseq to take &Token
Various typos corrected