Investigate using Lenses for Space manipulation
        
          Summary: The Space code has a bunch of slightly-messy structure-rewrites.  This is exactly what Lenses are good for, so we should consider using them.
Investigate using 
Monocle, shapeless and scalaz.  Much of what we are doing is inside Maps -- do either of these Lens interpretations actually help?
Pay attention to performance!  This is fairly central code, so slowing it down much is not acceptable!  It isn't so messy that a slow Lens implementation would be worthwhile.  (But performance may be fine, so it's worth considering.)