Add port of part of data-lens

Useful to work around the following:

https://github.com/idris-lang/Idris-dev/issues/1356
Use a lens to update refreshed state
Use lens instead of pattern for workspace stack
Use uncurry instead of a pattern
Add mirror and full layouts