Change implementation and interface of canonical-base

- now returns a lazy sequence of its result
- takes as third argument a predicate, similar to the one used
  by next-closed-set-in-family

Signed-off-by: Daniel Borchmann <daniel.borchmann@mailbox.tu-dresden.de>