Implement while_true view

`view::while_true(range, predicate)` returns a slice of `range` starting at its beginning and ending at the first element of the range for which the `predicate` is false. 
Bonus points if you find a way to make this cleaner. That code in `transformed_view` is an unholy mess.