Add basic state-machine, which can be used as a mixin, + tests

[#64591252]
Add click-support for adding agents to Environment

Environment now extends (could eventually just mix-in) the
StateMachine helper, so that we can have different user-interaction
states.

EnvironmentView adds a click handler to the canvas and sends
the event to the Environment.

[#64591252]
Add ability to define properties for click-to-add agents

[#64591252]