Todo:
- docs: write about pyranges-internals
- docs: NCLS
- docs: pyrle
- create pyranges-compiled package. sorted_nearest is too narrow a name
- be able to read wonky flybase gffs

Bugs:
- pr.data.ensembl_gtf().cluster(by="exon_id") not displaying correctly
- when subsetting on columns, expected order not always preserved

Test:
- (hypothesis): gr.coverage() == gr.coverage().to_ranges().coverage()

GenomicFeatures:
- (FIX): avoid .df call in tes/tss, genomicfeatures
- compute 3'-UTR
- have summary in gf also? what should it contain?
  - same as summary, only per feature type?
  - colsplit: divide PyRanges on values in columns

Think:
- what should subset ["chr1", "."] in an unstranded PyRanges with a strand-column containing "." return? What about ["."]?
- have .strand accessor like .chromosomes? What if it has a Strand-column, but is not stranded?
