lib: add `EDSL.Condition.chain_and`
lib: fix killing of unix processes
lib,gen: use ATD inheritance for Targets' state
lib: keep track of “recoverable” errors (`target.log`)

I've been testing it from `utop`, for example the `ocaml`
condition-command does not return and times-out:

   #require "ketrew";;
   open Ketrew.EDSL
   let () = run (
     target "kbouh" ~done_when:Condition.(program Program.(sh "ocaml"))
   )