[#39] Added support for more settings in the `elasticsearch.yml` configuration file

* Added support for Multicast configuration in attributes
* Added support for Gateway configuration in the configuration file
* Added support for JMX
* Added support for setting Garbage Collection and Slow Log configurations in attributes
* Added support for Throttling configurations in attributes

Closes #39
Added the extension method `print_value` for convenient filling configuration files

The method is automatically included in the Erubis::Context class, and available in all ERB templates.

<%= print_value 'bar' -%> is evaluated as:

 `node[:bar]`

<%= print_value 'foo.bar' -%> is evaluated in multiple ways in this order:

 as `node['foo.bar']`,
 as `node['foo_bar']`,
 as `node.foo.bar` (ie. `node[:foo][:bar]`)

See documentation in the `libraries/print_value.rb` file.

Fixes: #39
Complete overhaul of the attributes configuration and the `elasticsearch.yml` template

* Cleaned up and pruned the `attributes.rb` file
* Complete overhaul of the Elasticsearch configuration file, using the stock one as template

The template uses the `print_value` extension method to print attributes with a "truthy"
value, set either in data bags, node attributes, role override attributes, etc.

It is possible to set *any* configuration value exposed by the Elasticsearch configuration file.

For example:

    <%= print_value 'cluster.routing.allocation.node_concurrent_recoveries' -%>

will print a line:

    cluster.routing.allocation.node_concurrent_recoveries: <VALUE>

if the `node.cluster.routing.allocation.node_concurrent_recoveries` attribute is set.

The default attributes set by the cookbook contain values inferred from the environment
(eg. the memory settings or the node name), or reasonable defaults for production.
Use your preferred method of attribute configuration to set them.

Fixes: #39
[FIX] Make the `print_value` method work with `false` values

Prevent values with a value set to `false` being skipped; eg. setting the
`node.bootstrap.mlockall = false` wouldn't print the line in the YAML
configuration file, due to the `||=` semantics.

This patch now checks the `nil` value explicitely.

Related: #39
[FIX] Fix the paths configuration in the attributes file

After the attributes refactoring, the `data_path` etc. attributes
were left untouched, causing a regression.

Related: #39
[FIX] Fix incorrect handling of `path.data` attribute as Array

The `path.data` attribute can be set as a String (`"/my/path1,/my/path2"`),
or an Array (`["/my/path1","/my/path2"]`) and the YAML file must reflect this.

Related: #39
[FIX] Use correct attributes in the node attributes in the Vagrantfile

Related: #39
[FIX] Add better test coverage for the attributes in the elasticsearch.yml file

Related: #39
[FIX] Use correct cluster name and node name

* Use correct value for the `node.elasticsearch.pid_file` attribute
* Use correct node name in the init script
* Use correct cluster name in the `create_ebs` method

Related: #39
[FIX] Fix incorrect handling of the `node.elasticsearch[:jmx]` query in `elasticsearch-env.sh`

The `if node.elasticsearch[:jmx]="true"` query was always evaluating to true.

Related: #39
[FIX] Fix incorrect attribute for logs (node.elasticsearch[:path][:logs])

Related: #39
[FIX] Prevent incorrect values for `node.elasticsearch.gateway.type`

Previously, the elasticsearch.yml file would contain:

    gateway.type: Chef::Node::Attribute

That's because Chef returns a Ruby object as all attribute values, and that object has a `type` method, indeed.

Related: #39
[FIX] Corrected all references to all `*_path` attributes to new ones

Related: #39
Added the `logging.yml` template file and corresponding attribute file

Added the ERB template for the `logging.yml` configuration file,
based on the stock Elasticsearch repository one.

Added a simple test case based on attributes set in Vagrantfile.

The configuration handling is dynamic: it walks over all attributes set
in the `node.elasticsearch.logging` namespace, and prints all which are set.

So, to configure eg. the `discovery` level, simply set the corresponding attribute:

    node.elasticsearch.logging['discovery'] = 'TRACE'

As always, set the node attribute directly with `knife` or JSON data for Chef Solo,
with roles, as a part of `settings` databag, etc.

Related: #39
[FIX] Correct fix for incorrect values for `node.elasticsearch.gateway.type`

We have to explicitely set the `gateway.type` attribute so Chef doesn't use the `Object#type` method.

Related: #39
[#39] Included the default attributes in `elasticsearch::proxy` to prevent Chef errors

In some environments, the Chef run failed with:

    ================================================================================
    Recipe Compile Error in /tmp/vagrant-chef-1/chef-solo-2/cookbooks/elasticsearch/attributes/proxy.rb
    ================================================================================

    NoMethodError
    -------------
    undefined method `[]' for nil:NilClass

    Cookbook Trace:
    ---------------
      /tmp/vagrant-chef-1/chef-solo-2/cookbooks/elasticsearch/attributes/proxy.rb:18:in `from_file'
    ...

as reported by @ncolomer in #39. There's a related [`CHEF-2903`](http://tickets.opscode.com/browse/CHEF-2903) issue
in the Chef tracking system (“Attribute files not loaded in deterministic order”).

This patch include the default attributes in the `elasticsearch::proxy` attribute file, as suggested by @chrisroberts.

Fixes #39
[#39] Fixed incorrect slowlog configuration in `elasticsearch.yml`

Fixes #39
[#39] Hopefully final attempt to fix the incorrect `gateway.type` attribute handling

Fixes #39
[#39] Added configuration for slowlog into the Vagrantfile

Also added a test clause.
[SETUP] Use the forked "java" cookbook with the `update-alternatives` fix

Until opscode-cookbooks/java#31 is merged in, the "java" cookbook blows up on CentOS.