wakeGraceTime wait before executing wakeCommand
### Backstory
Based my interpretation of the README, it looks like the `wakeCommand` should execute after `wakeGraceTime` number of seconds have elapsed.

However, it currently looks like the `wakeCommand` is executed immediately after the `wol` request.

Am I misinterpreting the documentation? (listed below)

> | Key       | Description                                                     | Required |
> | --------- | --------------------------------------------------------------- | ---------|
> | wakeGraceTime     | Number of seconds to wait after wake-up before checking online status and issuing the `wakeCommand`, default `45`   |  No       |


### Issue

I have a slightly unusual use-case, since I would like to wake a virtual machine running on a host computer that may or may not be already powered on.

I was hoping the `wakeCommand` would be executed after the `wakeGraceTime` so that I could turn on the vm through ssh after powering on the host.

### Environment
* homebridge-wol version: master branch (36cdd0fa988cc41ccea02b2bdde0d7262f30e23a)

### Configuration
My configuration looks like this:
```
        {
            "accessory": "NetworkDevice",
            "name": "<vm-name>",
            "mac": "<host-mac-address>",
            "ip": "<vm-ip>",
            "pingInterval": 10,
            "wakeGraceTime": 45,
            "wakeCommand": "ssh <host-user>@<host-ip> <start-vm-cmd>",
            "shutdownGraceTime": 15,
            "shutdownCommand": "ssh <host-user>@<host-ip> <shutdown-vm-cmd>"
        }
```

### Log
When I follow these steps:
1. Run `DEBUG=* homebridge -D -P ~/homebridge-wol/`
2. Let it run for one minute
3. Tap `<vm-name>` switch

I get the following log (relevant section):
```
[2019-3-4 21:24:01] [<vm-name>] NetworkDevice awake cycle started for "<vm-name>" (<vm-ip-address>)
[2019-3-4 21:24:01] [<vm-name>] Attempting to wake up "<vm-name>" (<vm-ip-address>)
[2019-3-4 21:24:01] [<vm-name>] NetworkDevice "<vm-name>" (<vm-ip-address>) went from status "Offline" to "Waking Up"
[2019-3-4 21:24:01] [<vm-name>] Stopping pinger
[2019-3-4 21:24:01] [<vm-name>] Attempting to wake up "<vm-name>" (<vm-ip-address>) using "ssh <host-user>@<host-ip> <start-vm-cmd>"
[2019-3-4 21:24:01] [<vm-name>] Stopping pinger
[2019-3-4 21:24:01] [<vm-name>] Starting pinger at an interval of 10000 milli seconds
[2019-3-4 21:24:02] [<vm-name>] An error occured while trying to wake "<vm-name>" (<vm-ip-address>): Error: Command failed: ssh <host-user>@<host-ip> <start-vm-cmd>
ssh: connect to host <host-ip-address> port 22: No route to host

[2019-3-4 21:24:02] [<vm-name>] Stopping pinger
[2019-3-4 21:24:02] [<vm-name>] Starting pinger at an interval of 10000 milli seconds
[2019-3-4 21:24:02] [<vm-name>] Pinger can't see device; setting to Offline.
[2019-3-4 21:24:02] [<vm-name>] NetworkDevice "<vm-name>" (<vm-ip-address>) went from status "Waking Up" to "Offline"
```

### Notes

If there is supposed to be a delay before issuing the wakeCommand, the following change worked for me:
```
diff --git a/lib/network-device.js b/lib/network-device.js
index 9492e8d..f196ae7 100644
--- a/lib/network-device.js
+++ b/lib/network-device.js
@@ -154,13 +154,16 @@ class NetworkDevice {

     // Wake up using a wake command if available
     if (this.config.wakeCommand) {
-      exec(this.config.wakeCommand, error => {
-        if (error)
-          this.log('An error occured while trying to wake "%s" (%s): %s', this.config.name, this.config.ip || 'unknown ip', error);
+      setTimeout(() => {
+        exec(this.config.wakeCommand, error => {
+          this.log('Attempting to wake up "%s" (%s) using "%s"', this.config.name, this.config.ip || 'unknown ip', this.config.wakeCommand);
+          if (error)
+            this.log('An error occured while trying to wake "%s" (%s): %s', this.config.name, this.config.ip || 'unknown ip', error);

-        if (this.pinger)
-          this.pinger.start();
-      });
+          if (this.pinger)
+            this.pinger.start();
+        })
+      }, this.config.wakeGraceTime);

       woke = true;
     }
```