kc: read files without using `cat`
kc: avoid qx// invocations that go through shell
kc: cache path lookups for (most) execs

A few shell executions still remain, which use redirections.
Merge branch 'kc-without-shell'

Remove many unnecessary shell invocations from `kc`, executing the
processes directly. Reduces time from 0.270s to 0.170s avg.