Add binary searches with _n interface.
Refactor merge sort's merge kernel a bit. Change merge sort's block size to 256.

These changes seem to speed merge sort up a bit.
Eliminate aligned_read & aligned_write in favor of a generic copy_n.
This improves the performance of merge sort a bit.
Refactor index calculation into get_partition
Replace log_tile_size with tile_size in the merge subblocks kernel.
Speeds it up a bit.
Rename a variable for clarity
Replace a common subexpression with the function even_offset()
Rename 'src_offset' variable to 'rank'
Some comments to the merge kernel
Try to reverse engineer what find_splitter_ranks is doing.
Rename "listno" and "otherlist" to "tile_idx" and "other_tile_idx" for clarity.
Rename "othersize" to "other_tile_size" for clarity
Some more renames for clarity
Simplify some indexing arithmetic
A bit of simplification in find_splitter_ranks_closure
Eliminate a redundant if
Move variable declarations to their first use
Eliminate a dead branch
Eliminate <cstdio>
Rename and move some variables for clarity
Variable renames for clarity