Implement Clone for iterator adaptors using functions

impl Clone wherever the underlying iterator and the predicate / mapping
function implement Clone. For example bare functions impl Clone + FnMut,
so such functions used with .map() will produce a clonable iterator.

With this change, str's .bytes() iterator becomes clonable.

Add a single test that execises .clone() on a Map.