Supply.batch: handle no args and $elems == 1
Supply.batch: handle no args and $elems == 1

In most cases, the returned supply from the batch method emits arrays of
batched elements.  There's no reason why the following should happen:

$s.batch(elems => 1, seconds => 1000)
  tap sees arrays
$s.batch(elems => 1)
  tap doesn't see arrays

I also think that just batch() should do something sane and also return
a supply that produces arrays.  This provides us a very consistent
interface from the tap-side where we know post-batch we should always be
expecting an array of values.

Also prevent negative numbers and rational numbers from resulting in
infinite batching.

MasterDuke17/rakudo,awwaiid/rakudo,raydiak/rakudo,usev6/rakudo,labster/rakudo,tony-o/rakudo,tbrowder/rakudo,salortiz/rakudo,awwaiid/rakudo,tony-o/rakudo,tbrowder/rakudo,Gnouc/rakudo,raydiak/rakudo,salortiz/rakudo,rakudo/rakudo,salortiz/rakudo,sjn/rakudo,raydiak/rakudo,labster/rakudo,softmoth/rakudo,tony-o/rakudo,jonathanstowe/rakudo,rakudo/rakudo,Gnouc/rakudo,nbrown/rakudo,tbrowder/rakudo,nbrown/rakudo,Gnouc/rakudo,usev6/rakudo,lucasbuchala/rakudo,lucasbuchala/rakudo,tbrowder/rakudo,sjn/rakudo,MasterDuke17/rakudo,rakudo/rakudo,tbrowder/rakudo,nbrown/rakudo,labster/rakudo,rakudo/rakudo,usev6/rakudo,jonathanstowe/rakudo,lucasbuchala/rakudo,sjn/rakudo,labster/rakudo,softmoth/rakudo,nbrown/rakudo,salortiz/rakudo,MasterDuke17/rakudo,Gnouc/rakudo,softmoth/rakudo,nbrown/rakudo,labster/rakudo,usev6/rakudo,nbrown/rakudo,sjn/rakudo,softmoth/rakudo,awwaiid/rakudo,salortiz/rakudo,jonathanstowe/rakudo,tbrowder/rakudo,softmoth/rakudo,Gnouc/rakudo,awwaiid/rakudo,rakudo/rakudo,Gnouc/rakudo,MasterDuke17/rakudo,labster/rakudo,MasterDuke17/rakudo,raydiak/rakudo,salortiz/rakudo,MasterDuke17/rakudo,lucasbuchala/rakudo,tony-o/rakudo,sjn/rakudo,tony-o/rakudo,jonathanstowe/rakudo,lucasbuchala/rakudo,usev6/rakudo,jonathanstowe/rakudo,tony-o/rakudo,rakudo/rakudo,awwaiid/rakudo