On Commoner's liveness theorem and supervisory policies that enforce liveness in free-choice Petri nets