Added functions for operators over spatial windows.

- algorithms/spatial.py: New file
  - `get_window_bounds`: New function to computed spatial windows with shifted
    windows near image borders.
  - `get_window_bounds_clipped`: New function to computed spatial windows with
    clipped windows near image borders.
  - `apply_windowed_function`: New function to map an input function to a
    rolling spatial window.
  - `inner_outer_window_mask_creator`: Moved from detectors.py (was just
    called `window_mask_creator).
- algorithms/detectors.py: Moved `window_mask_creator` to spatial.py.
- tests/spatial.py: New unit tests for spatial functions.