Implement lazy quickcheck shrinking for numbers

Floating point shrinking is a little ugly at the moment because it goes through two layers of `Box<Shrinker<A>>`s.

Thanks to @alan_andrade for his help on this one.