Add `json_attributes: true` config option to ChefZero provisioner.

This option allows a user to invoke chef-client without passing the
generated JSON file in the `--json-attributes` option. That way if you
have a JSON definition of your node (including a run-list), the
chef-client run will depend entirely on what is on the "Chef Server".

For example, let's assume we want a node called "mynode" to be in the
"production" chef environment. Given a .kitchen.yml with the following:

    ---
    driver:
      name: vagrant

    provisioner:
      name: chef_zero
      json_attributes: false
      client_rb:
        node_name: mynode

    platforms:
      - name: ubuntu-12.04

    suites:
      - name: default

and an environment JSON description for our chef environment called
"production" in `test/integration/environments/production.json` that
looks like:

    {
      "name": "production",
      "default_attributes": {
        "myenv_attr": "Good to be in prod"
      }
    }

and a node JSON description for our node called "mynode" in
`test/integration/nodes/mynode.json` that looks like:

    {
      "id": "mynode",
      "chef_environment": "production",
      "run_list": [
        "recipe[nginx]"
      ],
      "normal": {
        "some_attr": "hello"
      },
      "automatic": {
        "ipaddress": "192.168.77.77"
      }
    }

then the instance will attempt to register with the Chef Zero server as
"mynode" (vs. "default-ubuntu-1204" in this case) and will receive a
run-list of `["recipe[nginx]"]` from the server. Additionally the
following node attributes will be setup:

* `node[:some_attr]` will be set to `"hello"`
* `node[:myenv_attr]` will be set to `"Good to be in prod"`
* `node[:ipaddress]` will be set to `"192.168.77.77"`

Note that the node JSON format assumes a Chef 11 serialized format which
Chef Zero will use under the hood. For more details, please read:

http://docs.opscode.com/essentials_node_object.html
Change must_equal to must_match to fix test on Windows
[provisioner/shell] it works
Fix Cucumber tests on Windows

* Switch to Aruba::InProcess
* Tag tests that need a spawned shell with @spawn
* Tag all help listings with @spawn
* Tests tagged with @spawn use Aruba::SpawnProcess
* Skip tests tagged with @spawn on Windows
Update omnibus URL to getchef.com.
Add --concurrency option.
concurrency: Number of multiple actions to perform at a time.
Fixing error when using more than one helper

When placing more than one helper in the test/integration/helpers
directory I was receiving the following error:

       /tmp/busser/gems/gems/busser-0.6.0/lib/busser/command/deserialize.rb:46:in
`Integer': invalid value for Integer(): "0664echo" (ArgumentError)
        from
/tmp/busser/gems/gems/busser-0.6.0/lib/busser/command/deserialize.rb:46:in
`perform'
        from /tmp/busser/gems/gems/thor-0.18.1/lib/thor/command.rb:27:in
`run'
        from
/tmp/busser/gems/gems/thor-0.18.1/lib/thor/invocation.rb:120:in
`invoke_command'
        from
/tmp/busser/gems/gems/thor-0.18.1/lib/thor/invocation.rb:127:in `block
in invoke_all'
        from
/tmp/busser/gems/gems/thor-0.18.1/lib/thor/invocation.rb:127:in `each'
        from
/tmp/busser/gems/gems/thor-0.18.1/lib/thor/invocation.rb:127:in `map'
        from
/tmp/busser/gems/gems/thor-0.18.1/lib/thor/invocation.rb:127:in
`invoke_all'
        from /tmp/busser/gems/gems/thor-0.18.1/lib/thor/group.rb:233:in
`dispatch'
        from
/tmp/busser/gems/gems/thor-0.18.1/lib/thor/invocation.rb:109:in `invoke'
        from /tmp/busser/gems/gems/thor-0.18.1/lib/thor.rb:43:in `block
in register'
        from /tmp/busser/gems/gems/thor-0.18.1/lib/thor/command.rb:27:in
`run'
        from
/tmp/busser/gems/gems/thor-0.18.1/lib/thor/invocation.rb:120:in
`invoke_command'
        from /tmp/busser/gems/gems/thor-0.18.1/lib/thor.rb:363:in
`dispatch'
        from /tmp/busser/gems/gems/thor-0.18.1/lib/thor/base.rb:439:in
`start'
        from /tmp/busser/gems/gems/busser-0.6.0/bin/busser:8:in `<top
(required)>'
        from /tmp/busser/gems/bin/busser:23:in `load'
        from /tmp/busser/gems/bin/busser:23:in `<main>'
Merge pull request #296 from meyouhealth/multiple-helpers

Fixing error when using more than one helper
Merge branch 'ChrisLundquist-shell-provisioner'
Formatting.
[provisioner/shell] Refactorings to duplicate useful logic from Chef*.

This work should lead directly to a refactoring of
`Kitchen::Provisioner::Base` with logic from
`Kitchen::Provisioner::ChefBase`.
Remove sandbox debugging in Driver::SSHBase.
Expose Provisioner#sandbox_path for use by drivers & remove tmpdir.

This commit changes the behavior of `Provisioner#create_sandbox` in that
it no longer returns the created sandbox path. Now the expected calling
behavior is to call `Provisioner#create_sandbox` and then refer to the
sandbox path with `Provisioner#sandbox_path`. This allows
`#create_sandbox` to make use of calls to super in a clean way and to
decouple the command and query nature of this method.
Extract #create_sandbox & #cleanup_sandbox code to Provisioner::Base.
Extract #calculate_path to Provisioner::Base as common provisioner logic.
Add expand_path_for class method in Provisioner::Base for provisioners.

This is a declarative way, similar to declaring default_config, to have
certain config values be path expanded. This helps when debugging using
`kitchen diganose` and leaves local paths unambiguous as to the source
location.

In general, all local config-related paths and files should be path
expanded.
Update config[:file] to config[:script] & refactor code.
Add a `data_path` to Provisioner::Shell.
Re-order methods in Provisioner::Base.
Update class comment in Kitchen::Provisioner::Shell.

Thanks to @juliandunn for the catch :)