What is the reasoning behind moving .execute() out of the commands themselves? It seems like this spreads responsibility for this task into two distinct places. Is there a reason we couldn't just have .execute() take the NeoStore to execute changes against (or some other interface that allows applying changes)?