some combinators for QCheck.Arbitrary