New generator implementation, that should solve issue #8.

Gen now attaches the suchThat-filter to the generator result,
usable by Prop. Therefore, any shrinked values can be filtered
with the original generator filter.

For this to work, it is required that the various generators
uses suchThat to attach a "post-condition" to themselves. For
example, the Gen.oneOf implementation looks like this now:

  def oneOf[T](xs: Seq[T]): Gen[T] =
    choose(0, xs.size-1).map(xs(_)).suchThat(xs.contains)

All in all, the new implementation seems to work fine, and should
hopefully cause less confusion.
Update tests to work with new Gen implementation. Fix some bugs in Gen.scala