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:

can we eliminate the args.length checking?

```
[2] pry(main)> define_method(:foo) do |arg|
[2] pry(main)*   puts arg
[2] pry(main)* end
=> :foo
[3] pry(main)> foo
ArgumentError: wrong number of arguments (0 for 1)
from (pry):8:in `__pry__'
[5] pry(main)> foo('a', 'b')
ArgumentError: wrong number of arguments (2 for 1)
from (pry):4:in `block in __pry__'
[6] pry(main)> foo('a')
a
=> nil
```