spec: fix once-ler/sharding issues

while recording, we weren't wrapping the default shard in a transaction,
so side effects could carry over to other groups/examples.

additionally, the previous version of once-ler added recording hooks to
any sharding group, whether or not it actually had any recordings. this
was sub-optimal, and also problematic for non-transactional tests.

this fixes a slew of the rerun failures.

also get rid of the ConnectionEnumerator, since an array suffices and is
easier to reason about (it was just like an array, except #each yielded
connections)

Change-Id: I8cf4d6fb74f2b048017a33c4fc50313cc8e5c19c
Reviewed-on: https://gerrit.instructure.com/38713
Tested-by: Jenkins <jenkins@instructure.com>
Reviewed-by: Cody Cutrer <cody@instructure.com>
Product-Review: Jon Jensen <jon@instructure.com>
QA-Review: Jon Jensen <jon@instructure.com>