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:
Yes, the tests fail if calling without args is not allowed:

```
  1) LWRP Lightweight Chef::Resource resource_name lazy default values evaluates the default value when requested
     Failure/Error: Unable to find matching line from backtrace
     ArgumentError:
       wrong number of arguments (0 for 1)
     # ~/src/chef/lib/chef/resource/lwrp_base.rb:76:in `block in attribute'
     # ~/src/chef/spec/unit/lwrp_spec.rb:174:in `block (5 levels) in <top (required)>'

  2) LWRP Lightweight Chef::Resource resource_name lazy default values evaluates yields self to the block
     Failure/Error: Unable to find matching line from backtrace
     ArgumentError:
       wrong number of arguments (0 for 1)
     # ~/src/chef/lib/chef/resource/lwrp_base.rb:76:in `block in attribute'
     # ~/src/chef/spec/unit/lwrp_spec.rb:178:in `block (5 levels) in <top (required)>'

    [...]
```