Fixed instanceof.
Fixed object class recognition.

This is a controversial change. It has only one goal, by using
named function expressions we're able to improve readability
of stack traces and general debugging because at least top-level
classes are annotated with class name.
Command should not inherit from Model.

Its name is constant, its value has to be changed by a special
method. Part of it could be abstracted as Model, but I think it's a bit of overuse.
Made a command's value presettable.

As you can see it started to duplicate the logic of updating
button's view state.
Extracted button's logic to a separate method.

We avoided code duplication in button A. But now... what about the second button?
Extracted code used by both button to separate class.
V and VM are private for controller.

I think that they should not be anyhow visible outside.
If anything happens with them, that's governed by controller.
It binds the world changes to MV. It contains methods if other
controllers need to interact directly (not be events).
So it's a kind of widget with one public API. Sounds familiar?
Unified subclassing.
Use full name for clear separation.