(#21320) Use sleep in the daemon loop instead of select

This fixes a bug on Ruby < 2.0 where the daemon might sleep for a very long
period after being interrupted with a signal. The implementation of select on
these ruby versions has an improper cast which resulted in a corrupted value
given to select on 64 bit systems. It is patched in Ruby 2.0 in
https://github.com/ruby/ruby/commit/b10c3136b0163536a679b10fecbc2992f3b5fa64 .

Sleep does not attempt to restart after being interrupted and does not have this bug.
(Maint) Cleanup specs

This cleans up the specs to make them a little more expressive of the
behavior of the fqdn_rand function's real functionality. One surprising
result that came out of this was that the tests tried to assert that the
fqdn_rand function was callable without any arguments. However the test
for this passed simply because it asserted that a particular error was
*not* raised, when in fact a different exception that expressed what it
was trying to catch (ArgumentError vs. Puppet::ParserError). The docs
indicate that calling with no arguments is not actually supported and so
that test has been removed.
(#21264) Update rgen dependency to 0.6.5

There is an error in rgen < 0.6.5 that causes it to incorrectly handle
Array#to_str via its monkey patching of Array#method_missing. This adds
a check for this incorrect behavior and updated our Gemfile dependency
on rgen. The package dependencies are already specified in a manner that
will pick up 0.6.5 once it is packaged.
(#21043) Use ruby.exe instead of rubyw.exe

Previously, if you set a custom runinterval setting in puppet.conf, puppet
running on ruby 1.9 would ignore it, whereas it would work in ruby 1.8.

The root cause is due to http://bugs.ruby-lang.org/issues/7239. In ruby 1.9,
rubyw.exe is unable to read the stdout of any child process using ruby's
built-in process methods, e.g. %x. This affects us, because the windows
service, running as rubyw.exe, executes:

    `%x{ puppet agent --configprint runinterval}`

to obtain the current runinterval setting.

The bug is fixed in ruby 2.0, so for now, we just switch to using
`ruby.exe` instead of `rubyw.exe`.
Merge pull request #1725 from joshcooper/ticket/stable/21043-runinterval-broken

(#21043) Use ruby.exe instead of rubyw.exe
Merge pull request #1724 from zaphod42/issue/stable/21264-implicit-array-conversions-break-because-of-rgen

(#21264) Update rgen dependency to 0.6.5
Merge branch 'stable'

* stable:
  (#21043) Use ruby.exe instead of rubyw.exe
  (#21264) Update rgen dependency to 0.6.5
  (Maint) Cleanup specs
  (#21320) Use sleep in the daemon loop instead of select