Bounded set

I'm adding the (optional) KList-like bound to the typesets (renaming current `Bound` to `Union`). Optinal means that there is an alias for `Any`.

```scala
val a = name :~: age :~: weight :~: setOf[AnyProperty]
implicitly[a.Bound =:= AnyProperty]

val b = name :~: age :~: weight :~: ∅
implicitly[b.Bound =:= Any]
```

Although `b.Types` and `b.Union` is as precise as it is now. So it should be an addition without losing any current advantages.