refactor ray to work with a partially merged graph

@Elmira88 @anbangx @JavierJia @Nan-Zhang 

Sorry this took a while to get the offsets correct for the paired-end reads.  In this branch, I've taken @Elmira88's code and refactored it pretty heavily to let the ray scaffolding work on a merged graph.  This is actually quite a bit more complicated than the unmerged case-- check out the score function for an example of how!

There are tons of `TODO`'s in the code.  I'll be chipping away at them, though anyone is welcome to contribute here.  There are several algorithmic questions to be addressed which I've raised in TODO comments as well.

@Nan-Zhang it would be great to have a version of your KMP algorithm that would let me specify ranges.  In the case of paired-end reads, we are searching for a particular subset of one kmer in a particular subset of another kmer.

I'd also love feedback on how to make the scoring more efficient, perhaps via some batch operations.