Renamed `props` to `propOf`, reimplemented `props` as multiple `prop`

Closes #499.
agreed