Add a syntax for some asymmetric predicate filters

This PR adds a simpler syntax for writing filters for asymmetric predicate filters like on the `filter` function.

Here are two examples:

```racket
Welcome to Racket v6.0.1.6.
-> filter
- : (All (a b)
      (case->
       (-> (-> a Any : #:+ b) (Listof a) (Listof b))
       (-> (-> a Any) (Listof a) (Listof a))))
#<procedure:filter>
-> takef
- : (All (a b)
      (case->
       (-> (Listof a) (-> a Any : #:+ b) (Listof b))
       (-> (Listof a) (-> a Any) (Listof a))))
#<procedure:takef>
```

Note that the `#:+` syntax used here is similar to the existing one, but allows leaving off the `@ 0` part. Also, I didn't add special-cased printing for anything but `#:+` with a `-filter` because the other cases are rarely used. For the other cases, I think we should add a toggle for complex filter printing (I have a draft commit for this somewhere).

More generally, I think we should also just use the currently implemented but not printed or documented syntax for complex filters. We would also need to think about how multiple `Values` with filters should be printed.