As it was discussed in #156 (comment) and #156 (comment) we should split out the core functionality of random out into a new random-core package, which would be the direct dependency of QuickCheck, thus allowing for easy testing of boot packages like bytestring without creating circular dependencies.
This would allow us to not only provide Uniform and UniformRange instances for more types from boot libraries, but would allow us to expend the interface to generating random data structures (eg, containers, array, etc.)