Initial changes for array-wise `crash_kiss.edge`.

Initial changes to `edge` for numpy-array-as-edge approach. Started work on foreground/background edge container object.
 adapted for  changes, added  import for py2 compat
Simple  script changes to adapt to new  module
Continued work on  and  container
Moved image flipping, rotating functions to
Added a simple test image and the start of a py.test style unit test module
Finished move of img rotation/translation functions to util.py
Working Side and Subject (side container) objects

Side objects and the Subject container object are working. The next step with Side and Subject is to provide extra methods that give Subject awareness of the background and edge arrays of other Sides it contains for smarter edge detection.
Edge finding bug fixes, improvements

* The `Side` object is now correctly passed its `Subject` container's config
* The `Side` object now constructs its `edge` attribute as a `np.ma.array` so that invalid indices can be masked
Small change to edge reveal function
A few more important tests
Unit test improvements

* added another edge finding unit test with a different threshold config
* improved unit test docstrings and comments
Array-wide-edge branch is now working

* fixed minor ckiss script bugs
* added parameter for edge reveal width to ckiss script
* fixed `util.textify_edges` for new masked array approach
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.
ckiss cript option fix, addition

* added `--relative-sides` option for restricting the perspectives used in processing the image (i.e. left, right, up, down or some combination of those)
* fixed not passing `--neg-sample-size` arg to the `Subject` config
Added --chunksize option to ckiss
Edge reveal func no longer covers up subject