Added `defprop` and `when`

`defprop` is used to define properties on objects, and is the king of
mutability. It's useful though for low level mechanics in implementing
abstractions, and provides a cleaner API than `Object.defineProperties`.
Clean up `nth`
Fix up `src`