Eagerly throw a helpful exception when elements is called on an empty collection

Prior to this change elements will happily take an empty collection and
call gen/choose with 0 and -1, which apparently generates lots of 0s
and 1s, and then eventually throw an IndexOutOfBoundsException when it
eventually calls nth on the empty collection.