Teach commands to parse Rails env from command-line arguments

Some commands (e.g. `runner` or `console`) allow users to specify the
Rails env (e.g. `rails runner -e test` or `rails console test`). This
commit parses options passed to `spring (runner|console)`, using some
poor man's `optparse`.

Before - this would be the buggy behaviour:

    $ spring runner -e test puts\ Rails.env
    development

After - spring parses the `-e` option:

    $ spring runner -e test puts\ Rails.env
    test

Supported options are:

- runner -e some_env
- runner --environment=some_env
- console some_env

A side effect of this change is that `Command#env` may now return `nil`,
in which case `#rails_env_for` will fallback to RAILS_ENV, etc.
Merge pull request #74 from exviva/rails_env_as_command_argument

Teach commands to parse Rails env from command-line arguments
Either use ListenWatcher or PollingWatcher.

If `listen` is available we will default to ListenWatcher,
but if not we will use PollingWatcher.

`listen` provides the ability to use OS specific file system
events so that polling for changes takes significantly less
IO and CPU overhead.