Combinatorics updates

* Removed unnecessary copy from `combinations()`
* Added `permutations()`
* Added start, stop to `reverse`, `reverse!`
* Added simple tests for combinatorics, reverse

(Partially addresses #3989)