Fix behavior of select! to be consistent with select #14752

Fixes #14752

Select mimics the block interface of arrays, but does not mock the
block interface for select!. This change introduces two changes to
the behavior of select!.

1) if select! is called without an argument or a block, an error
is raised (consistent with select)

2) if select! is called with a block, it delegates the call to the
array representation of the association.

Thanks to @eric-smartlove for pointing out the issue.