[driver_manager] A few fixes in power managent

Introduces a few fixes into driver manager that I had to make in order
to get my suspend/resume system test to work.

 - Use the initial lease rather than a separate lease call
 - Pass the lease to all_drivers instead of making another
 - use weak ptr to restore restart operations
 - bypass global power element if running under the test
 - Remove recursive graph traversal in favor of iterative
 - factor out into helper DFS functions

Change-Id: I8ef32c172f22232332882e103754ab916e166deb
Reviewed-on: https://fuchsia-review.googlesource.com/c/fuchsia/+/1624095
Reviewed-by: Justin Mattson <jmatt@google.com>
Commit-Queue: Novin Changizi <novinc@google.com>
Fuchsia-Auto-Submit: Novin Changizi <novinc@google.com>
Reviewed-by: Sarah Chan <spqchan@google.com>
11 files changed