* Update rustfmt compliance
Looks like rustfmt has made some improvements recently, so wanted to bring the
code up to date.
* Add rustfmt to nightly item in Travis matrix
* Use Travis Cargo cache
* Allow fast_finish in Travis
Items that match the `allow_failures` predicate (right now, just Rust nightly),
will still finish, but Travis won't wait for them to report a result if the
other builds have already finished.
* Run kcov in a separate matrix build in Travis
* Rework allowed_failures logic
We don't want rustfmt to match `allow_failures` just because it needs to use
nightly, while we do want nightly to match `allow_failures`. Env vars provide a
solution.
* Add --all switch to rustfmt Travis
* Test building docs in Travis
* Use exact Ubuntu dependencies listed for kcov
Some of the dependencies we were installing were not listed on
https://github.com/SimonKagstrom/kcov/blob/master/INSTALL.md, and we were
missing one dependency that was listed there. When `sudo: true` Travis uses
Ubuntu Trusty.
* No need to build before running kcov
kcov builds its own test executables.
* Generate `Cargo.lock` w/ `cargo update` before running kcov
As noted in aeb3906cce8e3e26c7bc80d6aec417b365f3d2f1 it is not necessary to
build the project before running kcov, but kcov does require a `Cargo.lock`
file, which can be generated with `cargo update`.