Working with the tests, I found that it may make more sense to allow configuring all client properties.  What do you think about:

```
type Config struct {
  ...
  Properties Table
}
```

To be used as:

```
amqp.Open(..., amqp.Config{
  Properties: amqp.Table{
    "product": "my user agent",
    "version": "Γ",
  },
})
```

Then Properties would be merged with the default values, replacing or extending the `ClientProperties` of the `connectionStartOk` frame?