Refactor power handling

Add reference counted ethosu_request_power(),
ethosu_release_power() functions. While there are
active requests, disable the Q-channel power gating
of the Ethos-U device, leaving the device powered on.
Note that clock gating is implemented to follow the
state of the power gating.

Add ethosu_soft_reset() function. Restore power-
and clock gating state after reset.

Refactor and simplify driver code to use the new
functions.

Change-Id: I9756572c5c3e51b2be244bcea856d88e890e2d40
diff --git a/src/ethosu_device_u55_u65.c b/src/ethosu_device_u55_u65.c
index 31379fc..f16f9f8 100644
--- a/src/ethosu_device_u55_u65.c
+++ b/src/ethosu_device_u55_u65.c
@@ -209,6 +209,9 @@
 
 enum ethosu_error_codes ethosu_dev_soft_reset(struct ethosu_device *dev)
 {
+    // Note that after a soft-reset, the NPU is unconditionally
+    // powered until the next CMD gets written.
+
     struct reset_r reset;
 
     reset.word        = 0;