Refactor wakelock handling. Lifecycle exempt apps now release wakelock when shell tries to suspend them
The previous Wakelock RAII design was faulty as it was wrapping an asynchronous service. It made it possible for wakelocks to be acquired and not be released.
This refactors SharedWakelock to hold a single instance of Wakelock, and Wakelock always holds a DBus connection.
Testing now includes testing the DBus calls are actually emitted.
Adds dependency on libqtdbusmock1-dev and libqtdbustest1-dev Fixes: #1423787
Approved by: Michael Zanetti, PS Jenkins bot, Albert Astals Cid