Check for structure binding and raise good error if it is not there.

Closes PR 13588.
Also cleans up old require/typed format.

The change to require/typed is no longer needed, as I moved the check to after expansion so that it worked when other struct forms in the require/typed introduce bindings that it needs to detect. I left it is as I think removing it is good as it is undocumented and could confuse someone who accidentally found it.