Switched over substr and trim functions in str to be non-allocating, temporary renamed them to better track use-sites
Un-renamed trim and substr functions.
auto merge of #5479 : Kimundi/rust/str-dealloc, r=z0w0

This makes the `trim` and `substr` functions return a slice instead of an `~str`, and removes the unnecessary `Trimmable` trait (`StrSlice` already contains the same functionality).

Also moves the `ToStr` implementations for the three str types into the str module in anticipation of further untangling.