let properties return a counter-example when it exists

This is useful when debugging our implementation code, or testing that
our correctness properties indeed catch bugs. For example, if you
change the 'blacken' code to be always return its input unchanged,
then in the toplevel:

    # open RBT;;
    # let _ = Ty.counter_example rbt_t RBT.is_balanced;;

will return
    - : RBT.t option =
    Some
     (T (R,
       T (R, Empty, 2, T (R, T (R, Empty, 5, T (R, Empty, 8, Empty)),
                             8, Empty)),
       8, Empty))