libs: make Cow usable, improve documentation

This commit makes `Cow` more usable by allowing it to be applied to
unsized types (as was intended) and providing some basic `ToOwned`
implementations on slice types. It also corrects the documentation for
`Cow` to no longer mention `DerefMut`, and adds an example.
This should use `into_string`. `to_string` goes through the formatting infrastructure, and tends to over-allocate space in the heap. See this [playpen example](http://is.gd/mH0wjX), and also see #16415.