Fix data race for (*Connection).names
Check for depth of container types in signatures

Updates #9, but doesn't quite fix it (because variants may increase the depth,
but it isn't known whether they do unless the value is looked at, which is kind
of the whole point of variants).