Be more explicit about passing a tuple to withExtendedLifetime
Be more explicit about passing a tuple to withExtendedLifetime

withExtendedLifetime takes a single-argument closure.
We used to pass two values with code like this:

```
  let storagesAreEqual: Bool = withExtendedLifetime((_storage, other._storage)) { (_storage, other_storage) in
```

Technically, this is asking the compiler to
implicitly deconstruct the tuple.  Some of the
development snapshots for Swift 4 really dislike
this form, so this commit changes the generator
to instead emit the following equivalent but
more explicit code:

```
  let storagesAreEqual: Bool = withExtendedLifetime((_storage, other._storage)) { (_args: (_StorageClass, _StorageClass)) in
    let _storage = _args.0
    let other_storage = _args.1
```

apple/swift-protobuf,tbkka/swift-protobuf,thomasvl/swift-protobuf,cburrows/swift-protobuf,cburrows/swift-protobuf,tbkka/swift-protobuf,allevato/swift-protobuf,thomasvl/swift-protobuf,cburrows/swift-protobuf,allevato/swift-protobuf,tbkka/swift-protobuf,apple/swift-protobuf,thomasvl/swift-protobuf,apple/swift-protobuf,allevato/swift-protobuf,thomasvl/swift-protobuf,thomasvl/swift-protobuf,allevato/swift-protobuf,allevato/swift-protobuf,tbkka/swift-protobuf,apple/swift-protobuf,allevato/swift-protobuf,tbkka/swift-protobuf,allevato/swift-protobuf,apple/swift-protobuf,cburrows/swift-protobuf,thomasvl/swift-protobuf,tbkka/swift-protobuf,thomasvl/swift-protobuf,cburrows/swift-protobuf,cburrows/swift-protobuf,apple/swift-protobuf,tbkka/swift-protobuf,cburrows/swift-protobuf,apple/swift-protobuf