Remove some simple Ruby 1.8 and 1.9 code

I think these are the safest to remove from `lib/`:

* Remove `IO::binread` implementations.
* Use `#define_method` instead of `#class_eval` to create methods.
* Remove `RUBY_VERSION < 2` comparisons.
* Not needed code related with method args default values.
* Some comments updated.

Some parts from #2497 are fixed with this:
> * [x] lib/chef/mixin/securable.rb#L115-L119
> * [x] lib/chef/mixin/template.rb#L26-L36
> * [x] lib/chef/node/immutable_collections.rb#L78-L83
> * [x] lib/chef/resource/lwrp_base.rb#L76-L87
> * [x] lib/chef/resource/template.rb#L105-L107
> * [x] lib/chef/run_context.rb#L197-L208
> * [x] lib/chef/search/query.rb#L135-L136
> * [x] lib/chef/util/path_helper.rb#L104-L106
> * [x] lib/chef/mixin/command/windows.rb:21

I hope I have not broken anything :pray:
Maybe I'm wrong, but I think we want to be able to call the method without arguments (calling `foo()` in your example). So we need to use the `*args` and the exception.

This code is for LWRP resources to define the attributes. For example:

```ruby
attribute :path, kind_of: String, default: '/'
```

We want to be able to call `new_resource.path` without arguments to read the path. I'm going to change the exception to be `'wrong number of arguments (x for 0 or 1)'` and avoid this confusion.