docker commit --change support

Replaces #8332 fixing an issue with returning a hard error when there is an invalid command for commit.


Why are we instantiating the parser and evaluator here in a way which is extremely similar but subtly different, and prone to bit rot later? There has to be a better solution than this.