rustc: Require that vector indices are uints

This commit tightens up the restriction on types used to index slices to require
exactly `uint` indices. Previously any integral type was accepted, but this
leads to a few subtle problems:

  * 64-bit indices don't make much sense on 32-bit systems
  * Signed indices for slices used as negative indexing isn't implemented

This was discussed at the recent work week, and also has some discussion on
issue #10453.

Closes #10453
Fix fallout of requiring uint indices
auto merge of #13257 : alexcrichton/rust/index-uint, r=pnkfelix

The details are outlined in the first commit. 

Closes #10453