syntax: Allow 1-tuple expressions

This is for greater uniformity (for example, macros that generate
tuples). rustc already supported 1-tuple patterns, but there was no
way to construct a 1-tuple term.
Added rust convenience tool similar to go's go tool
Attempt to solve make check test ambiguity betwen crate 'rust' and extratected doc 'rust'
rustc: For one-tuples, make parsing and printing the type work

and add a test to reflect-visit-data
Missing newline causing title to not be a title
auto merge of #5029 : mcpherrinm/rust/master, r=catamorphism

Added a newline to make header be a header.

(re-did pull request because I screwed up the last one)
auto merge of #5014 : Kimundi/rust/incoming, r=graydon

This implements a rust tool similar to go's go tool. It acts as a central hub for the tools rustc, rustdoc, rustpkg, rusti, and also provides shortcuts for directly compiling and running a source file either as a normal or a test executable. Default usage message:

```
The rust tool is a convenience for managing rust source code.
It acts as a shortcut for programs of the rust tool chain.

Usage:	rust <command> [arguments]

The commands are:

    build   compile rust source files
    run     build a executable, and run it
    test    build a test executable, and run it
    doc     generate documentation from doc comments
    pkg     download, build, install rust packages
    sketch  run a rust interpreter
    help    show detailed usage of a command

Use "rust help <command>" for more information about a command.
```
rt: fix memory-unsafe random seed logic, r=valgrindclean
rt: remove export of symbol removed in last commit, r=burningtree
std: update rand-using tests, r=burningtree
fix ICE after incorrect number of args in calls
test: fix seeded_rng uses
auto merge of #5002 : catamorphism/rust/one-tuples, r=graydon

r? @graydon - This is for greater uniformity (for example, macros that generate
tuples). rustc already supported 1-tuple patterns, but there was no
way to construct a 1-tuple term.

@graydon , as far as your comment on #4898 - it did turn out to be solvable inside the macro (since @luqmana already fixed it using structs instead), but I still think it's a good idea to allow 1-tuples, for uniformity. I don't think anyone is likely to trip over it, and I'm not too worried that it changes the amount of ambiguity.
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