GUI -- Implemented Show/Hide Offline devices & Show/Hide Hosts (also used Flash Service).
- added 'toggle(cb)' to panel API.
- deferred keybindings to allow direct reference to sub-API functions.
- re-implemented tick() function.
- added 'list scenarios' command to mockserver.

Change-Id: I1cc0009266e1015747b1d8106bd1f088adb2feb5
diff --git a/web/gui/src/test/_karma/mockserver.js b/web/gui/src/test/_karma/mockserver.js
index 454d686..8ddcb9c 100644
--- a/web/gui/src/test/_karma/mockserver.js
+++ b/web/gui/src/test/_karma/mockserver.js
@@ -25,10 +25,7 @@
 var scFiles = fs.readdirSync(scenarioRoot);
 console.log('Mock Server v1.0');
 console.log('================');
-console.log('Scenarios ...');
-console.log(scFiles.join(', '));
-console.log();
-
+listScenarios();
 
 var rl = readline.createInterface(process.stdin, process.stdout);
 rl.setPrompt('ws> ');
@@ -118,6 +115,7 @@
         }
 
         switch(cmd) {
+            case 'l': listScenarios(); break;
             case 'c': connStatus(); break;
             case 'm': customMessage(str); break;
             case 's': setScenario(str); break;
@@ -137,10 +135,11 @@
 }
 
 var helptext = '\n' +
+        'l        - list scenarios\n' +
         'c        - show connection status\n' +
         'm {text} - send custom message to client\n' +
         's {id}   - load scenario {id}\n' +
-        's        - show scenario staus\n' +
+        's        - show scenario status\n' +
         //'a        - auto-send events\n' +
         'n        - send next event\n' +
         'r        - restart the scenario\n' +
@@ -151,6 +150,12 @@
     console.log(helptext);
 }
 
+function listScenarios() {
+    console.log('Scenarios ...');
+    console.log(scFiles.join(', '));
+    console.log();
+}
+
 function connStatus() {
     if (connection) {
         console.log('Connection from ' + origin + ' established.');