make Option::cloned generic over Deref, make cloned's tests actually run, add Cloned iterator adaptor