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

Closes #499.
since we know the length of the output array we can get a little boost by using Array constructor here