Translate the engine runner into a well defined state-machine

Instead of having a ad-hoc state-machine being used to perform
the various runtime actions (performed when a engine is ran) we
can gain a much more explict execution model by translating that
ad-hoc state machine to an explicit one instead...

This commit does just that, it adds a new fsm type that can be
used to create, define and run state-machines that respond to
various events (internal or external) and uses it in the runner action
engine module to run the previously ad-hc/implicit state-machine.

Implements blueprint runner-state-machine

Change-Id: Id35633a9de707f3ffb1a4b7e9619af1be009317f