[#5] Implement keyed switching between tabs, with skeleton Queues.

Extract threads wakeup to `App#wakey_wakey`, calling from `#stop` and
`#do_command`. This wakes threads for an immediate response, be it for
app shutdown or switching between tabs.

Define skeleton `Display::Panels::Queues`, with an empty structure.

Extend `App#do_command` to process `<w>` (Workers) and `<u>` (Queues).

Add tabs menu to `Display::Panels::Header`, with public `@panel_main`
for active vs inactive tab distinction.

Add `Display::Screen#panel_main=`, replacing `:workers` panel with
`:main`, and switching for Workers and Queues tabs.
[#5] Implement Spy::Queues, retrieving Sidekiq Stats Queues data.

This provides data equivalent to the `Sidekiq::Web` Queues page (but
not the linked Queue pages). It uses `Sidekiq::Stats#queues`, not
`Sidekiq::Queue`, as only the name and size of the queues are retrieved
(as per the `Sidekiq::Web` Queues page).

This is implemented in a similar way to `Spy::Workers`.
[#5] Define Display::Panels::Queues, equivalent to Queues page.

Adding to the existing skeleton, use the data provided by `Spy::Queues`
to display a list of active Sidekiq queues and their sizes. Note that it
is necessary to hook into `#refresh` and call `Spy::Queues#refresh`. The
list is defined to be precisely as many table rows long as the panel
minus the header row.

Note that the `Sidekiq::Web` Queue page (linked from Queues) is not
implemented as part of this work.
Merge branch 'panel-queues'