Ready/perturb

A few enhancements and upgrades to Quickcheck:

1. Updated some dependencies to their latest versions and added instances for `Char` and various Enums.
2. Added a newtype wrapper (`LastEnum`) to produce `arbitrary` / `coarbitrary` from any `Enum`.
3. Added a few more `Gen` combinators (`nChooseK`, `chunked`, and `shuffle`), primarily for use with smallCheck-style testing, as well as a character generator (`charGen`).
4. Added an `assert` function to Quickcheck based on the version found in /purescript/core-tests/. As used in core-tests, this `assert` function is very useful for unit tests.
5. Added a `Perturb` module which can be used to find more failing examples given one failing example (via `searchIn`).
6. Added jsvalidate to validate the final Javascript output.

This is API compatible with the old version. However, the addition of the `assert` function creates a conflict in core-tests, so in a separate PR I have removed the redundant `assert` function which was duplicated about 12 times in core-tests. I'll create that PR when I have a new quickcheck version to fix in core-tests.