rustc: Completely forbid borrows of unsafe statics

Summary:
It was possible to borrow unsafe static items in static initializers.
This patch implements a small `Visitor` that walks static initializer's
expressions and checks borrows aliasability.

Fixes #13005

Test Plan: make check

Differential Revision: http://phabricator.octayn.net/D2
mk: Stop building OS X .pkg as part of 'make dist'

This doesn't work quite right yet (we need to build packages for all hosts)
and I'm not ready to turn on new dist artifacts yet, but I want to start doing
dry runs for 0.10, so I'm turning this off for now.
mk: Reorder definitions in dist.mk

Just to be more logical, put big headers between different installers
mk: Cleanup
mk: Make OS X .pkg for all arches
mk: Cleanup version handling and add support for nightly dists
mk: Put win installer in correct dir
mk: Add docs to dist prep

For integrating doc upload into the dist-snap process
mk: Add FIXME about making windows installer support all hosts
mk: Fix distcheck

Also, add more distcheck tests
mk: Wire up everything to dist and distcheck

Fix some misc bugs
mk: Fix location of man pages in prepare.mk
mk: Run 'make install' through install.sh
install: Error on uninstall if manifest can't be found
mk: Fix some dist deps for parallel builds
mk: Cleanup dist.mk yet more
install: Improve error handling
install: Don't try to run binaries on install

I think there are likely to be scenarios where this script is run
to move files to the correct place during cross-compiles.
mk: Remove some debug logging
mk: Don't rm 'dist' during clean, just its contents

This is not for temporaries now