Implement engine listener service for multi-engine support

The engine listener service provides a way for engines to confirm that
other engines are still alive.  For example, during acquisition of a
stack lock, if an existing stack lock is found the engine will attempt
to communicate with the engine who owns that lock.  If the engine
responds affirmatively, the lock will be considered active.

Blueprint multiple-engines

Change-Id: I6d8f1305953212408f19688a1e0af81c44e5e5b4
Merge "Implement engine listener service for multi-engine support"