ckiss script improvements

* Fixed writing the rotated/flipped image with the `-o` option
* Added `--bg-change-tolerance`
* Better grouping of argparse args
edge detection optimizations

* Checks whether the background value has been reduced to a number. If it has, it checks to see whether a call to `np.abs()` can be avoided.
* Checks to see whether the background can be reduced to a number or a simple RGB array.
Added more image processing argparse args
More edge detection optimizations

* A chunk-wise edge finding approach that should (could?) reduce the depth that we search into the image. For a given row, the searcher should give up sooner after the first edge is found.
* So far there is no significant speedup from the chunk-wise approach. There is no slowdown either!
* Numpy masked arrays might not be used correctly. The masks could be ignored by `argmax`. This could explain the lack of a speedup.
* Broke edge, foreground finding into more pieces.