syntax: Rename `#[deriving(...)]` after expansion

This patch renames `#[deriving]` into `#[!deriving]` (starting with `!`)
to mark that expansion has completed.

This makes output of `--pretty expanded` valid.
pprust: Add parentheses for some Expr

Some `Expr` needs parentheses when printed. For example, without
parentheses, `ExprUnary(UnNeg, ExprBinary(BiAdd, ..))` becomes
`-lhs + rhs` which is wrong.

Those cases don't appear in usual code, but they can appear in manually
crafted ast by extensions.
pprust: Fix asm output
pprust: Print `&&e` instead of `& &e`
pprust: Remove unnecessary && of `print_tt`
libsyntax: Workaround pprust `for` issue
test: Add missing `#![feature(managed_boxes)]`

They use managed boxes, but are not correctly checked by feature gate
since they are inside macroes.
compiletest: Modernize typenames
compiletest: Test `--pretty expanded`

After testing `--pretty normal`, it tries to run `--pretty expanded` and
typecheck output.
Here we don't check convergence since it really diverges: for every
iteration, some extra lines (e.g.`extern crate std`) are inserted.

Some tests are `ignore-pretty`-ed.
Note that `--test` doesn't work with `--pretty expanded` since it prints
`#![!resolve_unexported]`.
fixupruntest