Set prop and path

To go along with Lenses, I'd like to revisit the idea of pure setters.

Ping #398
`setProp` is in `impure` extension, so someone needs a new name