-n / -N options: Only consider Ns between the sliding window cut sites

Otherwise Ns that might otherwise be trimmed off will cause unnecessary
read dropping.  For example using `--truncate-n`, if an N occurs early in
the sequence, it's possible for the 3' cut site to be set closer to the
5' end than the 5' cut site, which results in a dropped read due to
negative length.

Note: this depends on my previous PRs #34, #35, and #36 and so contains those commits as well. Only the last two commits on the branch are the ones specific to this PR.