Added `percolate(...)` and `percolator(...)` functions -- similarly to pull request 73 -- but also added unit tests, more verbose commenting, and IMO clearer function signatures.