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.)