shoes/shoes4 — pull request #925 by jasonrclark (2014-10-20 05:38:00+00:00)
Title: Initial support for shoes backend executables

**WIP: Still several TODO's on this, but wanted to get it up for comment**

Will address #841 if this is the way we want to go.

This introduces new functionality for chosing a shoes backend. The basic
concept is that while we don't want to run an additional Ruby script on every
app start (because of JRuby startup time), we *can* run it once to establish
a backend, and have the supported backend "picker" be implemented in Ruby.

When a backend is chosen, we write to `shoes-backend` in the bin directory,
with a generated command from the backend that the base `shoes` script can
run to start applications.

Leveraging this new scheme, the `shoes-swt` gem now installs a `shoes-swt`
executable, along with the necessary code to generate a compatible
`shoes-backend`. Still more to do making that generation fully
cross-platform for SWT, but it's a start. (Note that this is basically just what
`ruby-shoes` was before, but installed by the backend)

`shoes-picker` is the heart of selecting a backend from the available
gems. Right now this only supports a single backend, but this will be
easy to extend to allow selecting different backends.

Note that this PR doesn't have Windows support yet, but it also doesn't
remove the necessary files for Windows to run through the existing
`shoes.bat` -> `ruby-shoes` mechanism, so we're fine there to handle that
separately if desired.

What do you think about this approach?