Add an example which shows how to send events out from tasks

Tasks support a notification like channel that they can use
to emit information that has occurred internal to then be
received by any attached listeners. This kind of notification
even works when ran remotely; so this example shows how to use
that system to do something useful.

Part of blueprint more-examples

Change-Id: I104fa55e6b511df77464e3b89ee2bad6438482dd
Correctly trigger 'on_exit' of starting/initial state

Instead of not calling the 'on_exit' of the initialized
and/or starting state we should make an attempt to call
it if a function exists/was provided. This function will
be called on the first event to be processed (which will
cause the state machine to transition out of the starting
state to a new stable state).

Fixes bug 1404124

Change-Id: I037439313f9071af23c0859a62832d735f9abcd8
Move the engine scoping test to its engines test folder

Since the scoping is an action_engine implementation detail
its test should belong in the action_engine test cases folder
instead of being at the top level unit test folder.

Change-Id: Ic436c534103d1d9fafad95299bd2632cc7ee5634
Add a simplistic hello world example

Change-Id: I1d6e6535ab09d7f6c9d9ca3e2663983644b7a8a1
Merge "Add a simplistic hello world example"
Return the same namedtuple that the future module returns

Instead of converting the namedtuple that the future wait
function returns into a normal tuple, just have our own
internal functions use the futures namedtuple directly instead
and avoid any conversion to/from that namedtuple into a normal
tuple.

Change-Id: I54b2595af8d58db60843195034d66a623c20277c
Merge "Move the engine scoping test to its engines test folder"
Merge "Add an example which shows how to send events out from tasks"
Ensure manager started/shutdown/joined and reset

Ensure that when the task executor is started that we
correctly create a new multiprocessing manager (if needed)
and that on stop we correctly shut that manager down and
join it.

Also does a tiny adjustment to the joinable work item to
move the finish logic into its own method and ensures that
we have no targets on reset of the dispatcher.

Change-Id: I688df323fb24a7e228f4fa237f2fa772d9c0dc62
Merge "Return the same namedtuple that the future module returns"
Merge "Ensure manager started/shutdown/joined and reset"
Merge "Correctly trigger 'on_exit' of starting/initial state"