client API: make "cache" property and similar observable

Achieve this by polling. Will be used by the OSC. Basically a bad hack -
but the point is that the mpv core itself is in the best position to
improve this later.
command: add cache-idle property