Extend record punning to allow destructuring.

This patch extends the record punning syntax (b01621e8) to allow simultaneous label punning and destructuring.  Variables bound using `as` at the top level of a field pattern are treated as labels.  For example, it allows you to write

```ocaml
   fun { { x ; y } as p; q } -> e
```

which is equivalent to

```ocaml
   fun { p = { x ; y } as p; q } -> e
```