"The Rust Programming Language," Take II

An updated version of https://github.com/rust-lang/rust/pull/19461

This version vendors aturon/rust-book@731f7bf and builds it when building the docs. This is almost great, except my `make`-foo is poor, so I have my own personal paths in `mk/docs.mk`. How should I best get around that?

/cc @brson 
There are a few things here that need to change. Let me see if I can explain it in a coherent way.

`rustbook` needs to be added to the [`TOOLS` variable](https://github.com/rust-lang/rust/blob/master/mk/crates.mk#L59) which lists all the exes produced by the build (The existing compiletest tool is a good one to compare rustbook to - it's just an exe, not an exe and lib like rustdoc, and it's internal-only for now). Tools are built by [this macro](https://github.com/rust-lang/rust/blob/master/mk/target.mk#L112). Now you need no explicit rule for building 'rustbook'.

Define the variable for calling rustbook as the one for `RUSTDOC`:

```
# The rustbook executable...
RUSTBOOK_EXE = $(HBIN2_H_$(CFG_BUILD))/rustbook$(X_$(CFG_BUILD))
# ...with rpath included in case --disable-rpath was provided to
# ./configure              
RUSTBOOK = $(RPATH_VAR2_T_$(CFG_BUILD)_H_$(CFG_BUILD)) $(RUSTBOOK_EXE)
```

I know.

So:

```
trpl: $(RUSTBOOK)
```

trpl also depends on the source documentation so maybe more like

```
trpl: $(RUSTBOOK) $(wildcard $(SRC)/doc/trpl/*.md)
```

You might factor out that wildcard that is also used in `TEST_DOCS`.

```
+trpl: rustbook
+ cd src/doc/trpl; ../../../src/rust-book/target/rustbook build; cd ../../..;
+ cp -r src/doc/trpl/_book doc/book
```

This looks like it will not support an out-of-tree build, and currently rustbook doesn't itself, so I'd suggest copying all of rustbook to a temporary directory to build it and then to the final destination, maybe like

```
trpl: ...
  $(Q) rm -Rf tmp/trpl && rm -Rf doc/book
  $(Q) cp $(S)src/doc/trpl tmp/trpl
  $(Q) (cd tmp/trpl && $(RUSTBOOK) build)
  $(Q) cp tmp/trpl/_book doc/book
```

`$(Q)` means 'quiet' and suppresses output w/o `VERBOSE=1`. The parens before the cd start a subshell after which the cwd will change back.