(#19845) Allow a block to be supplied as a confine

Allows a confine to take only a block parameter like:

confine { File.exist? '/bin/foo' }

Or take a fact name and a block:

confine :ipaddress do |addr|
  require 'ipaddr'
  IPAddr.new('192.168.0.0/16').include? addr
end

This is similar to what Puppet allows in provider confines.
(doc) Update the Resolution#confine API docs

Without this patch, the API documentation for the
Facter::Util::Resolution#confine is a bit muddled and confusing.  This
confusion is caused by the different, overloaded, forms of arguments
that #confine accepts.

This patch addresses the problem by using the @overload YARD tag to
separate out each form, document the arguments for each form, and
provide a clear example for each form.
Merge branch 'dalen-19845_block_confine'

* dalen-19845_block_confine:
  (doc) Update the Resolution#confine API docs
  (#19845) Allow a block to be supplied as a confine

closes #410