Use IDs instead of indexes to identify the Runner

The IDs are guaranteed to be unique and stay constant, no matter what you do to the pane or window.

This diff is based on the idea in #81, by Roberto Agostino Vitillo (@vitillo), but rewritten to:

 * apply to the latest version of the source
 * use IDs for both windows and panes, not just panes

I have tested panes and windows as runners, both with `VimuxUseNearest` and without it. `VimuxTogglePane()` also works just fine.

This change is incredibly useful because once you have the runner, you can do whatever you want: spawn new panes, move the pane to a different window, join it back, reorder the panes and windows, change layouts, — it does not matter, your runner will remain set.