Implement RFC 027 File Verification

This implements user-suppliable file content verification per RFC
027. Users can supply a block, string, or symbol to the `verify`
resource attribute.  Blocks will be called, string will be executed as
shell commands (respecting the same options as not_if and only_if), and
symbols can be used to access built-in registered validations.
@kwilczynski Are you sure?  I think you would get an ArgumentError if I remove the &:

```
irb(main):008:0> def foo(f, &block)
irb(main):009:1>   if block_given?
irb(main):010:2>      block.call
irb(main):011:2>   else
irb(main):012:2*     f
irb(main):013:2>   end
irb(main):014:1> end
rb(main):016:0> foo("f")
=> "f"
irb(main):017:0> foo("f") { "g" }
=> "g"
irb(main):018:0> @myb = Proc.new { "fg" }
=> #<Proc:0x007fb2040c6ee0@(irb):18>
irb(main):019:0> foo("f", &@myb)
=> "fg"
irb(main):020:0> foo("f", @myb)
ArgumentError: wrong number of arguments (2 for 1)
        from (irb):8:in `foo'
        from (irb):20
        from /opt/chefdk/embedded/bin/irb:11:in `<main>'
```