libs: Add borrow module, deprecate _equiv and friends

Following [the collections reform RFC](https://github.com/rust-lang/rfcs/pull/235), this PR:

* Adds a new `borrow` module to libcore. The module contains traits for borrowing data (`BorrowFrom` and `BorrowFromMut`), generalized cloning (`ToOwned`), and a clone-on-write smartpointer (`Cow`).

* Deprecates the `_with` family of methods on `TreeMap` and `TreeSet` by instead generalizing the "normal" methods like `get` and `remove` to use the new `std::borrow` infrastructure.

* Deprecates the `_equiv` family of methods on `HashMap` and `HashSet` by instead generalizing the "normal" methods like `get` and `remove` to use the new `std::borrow` infrastructure.

[breaking-change]
And there's no way to change `deref_mut` to give you this type, because it must yield the same underlying type as `deref` does, which we definitely want to be borrowed (since we don't want it to require an owned copy).