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.
Interesting, I didn't know about this mixin.  Per your suggestion, the the new code would look something like:

```
extend Chef::Mixin::DescendantsTracker

def self.lookup(name)
  c = descendants.find {|d| d.provides?(name) }
  if c.nil?
    #error stuff here
  end
  c
end

def self.provides?(name)
  @provides == name
end
  
def self.provides(name)
  @provides = name
end
```

Here `register` becomes `provides` in the DSL.  If we adopted your other suggestion below, `provides?`  would just be driven from the first argument to `register_verification`.  I'm not too worried about scanning the descendants on lookup since (as you mentioned) that will only happen when you call a verification with a Symbol and since the number of verifications will likely be small for the foreseeable future.

It doesn't really reduce the amount of code or complexity, but at least it *moves* the most complex bits to a tested, shared library.  If DescendantsTracker were to break, I imagine Chef::Resource might notice it.

Thanks for pointing this mixin out.  Unless other reviewers can see a reason not to, I'll move to this in the next push.