libstd: Add some more functionality to Vec<T>
librustc: Automatically change uses of `~[T]` to `Vec<T>` in rustc.
librustc: Fix up fallout from the automatic conversion.
librustdoc: Fix librustdoc for the `Vec<T>` change.
Incorporated review feedback atop pcwalton's original patches.

(Original PR was #12716; feedback was provided by thestinger and me.)
auto merge of #12768 : pnkfelix/rust/fsk-devecing, r=pnkfelix

Change `~[T]` to Vec<T> in librustc.  Rebased and amended version of PR #12716.

Original author (or perhaps I should say meta-author) was @pcwalton, as is reflected in the commits.

I clean up!  :)
Remove Rc's borrow method to avoid conflicts with RefCell's borrow in Rc<RefCell<T>>.
Implement automatic overloaded dereference.
Closes #7141.
Introduce a common recursion limit for auto-dereference and monomorphization.
Apply @nikomatsakis' nits and comments patch.