On Windows, use g++ for linking, instead of gcc.
This is required in order to produce linked modules that perform correct registration of unwind tables.
Un-disable stack unwinding on Windows.
Emit unwind info in rustrt assembly files on Windows.
Compile via external assembler on Windows.
Enabled tests.
Cleanup assembly source.
Clarify use_decl module resolution docs.
auto merge of #8639 : singingboyo/rust/use-decl-doc, r=thestinger

Attempt #2 of [this pull request](https://github.com/mozilla/rust/pull/8597) since my tired mind decided messing up my repo, then deleting and re-forking was a good idea.  This is identical to the second last commit in that PR.  (The one before I ruined everything.)

This is an improvement to use_decl docs, which will hopefully improve understanding of how resolution works and where `extern mod` and module declarations should go to make them visible to use declarations.
Enabled unit tests in std and extra.
Disabled broken tests in std::vec.
auto merge of #8596 : vadimcn/rust/master, r=alexcrichton

This resolves issue #908.  

Notable changes:
-  On Windows, LLVM integrated assembler emits bad stack unwind tables when segmented stacks are enabled.  However, unwind info directives in the assembly output are correct, so we generate assembly first and then run it through an external assembler, just like it is already done for Android builds.

- Linker is invoked  via "g++" command instead of "gcc": g++ passes the appropriate magic parameters to the linker, which ensure correct registration of stack unwind tables in dynamic libraries.
rt: Remove last use of C++ exchange alloc
rt: Remove rust_exchange_alloc
rt: Remove indexed_list
rt: Remove timer
rt: Memory regions are never synchronized now
rt: Remove sync.h
rt: Remove exit_status helpers
rt: Move some test functions to rust_test_helpers
rt: Remove old precise GC code