Adds GRangesList and splitRanges()

- I've added a definition for GRangesList and worked out a splitRanges
function that works like split (in the documentation)
- splitRanges(gr::GRanges, each::int) will take a GRanges and divide
into several GRanges that are stored in a GRangesList object.
- the each parameter specifies how many entries in gr to include in the
current list before moving to the next one; thus, the last list will
contain the remainder of the entries that did not evenly divide; seems
okay.