Abstract validation logic into separate gem

/cc @arfon, @johndbritton
The constants will replace each other, like methods: http://stackoverflow.com/a/13234497

Lately, I have fallen in love with the idea of composability in programming. One major benefit is greater flexibility for modifying the internals by way of plug-and-play drivers of functionality.

```ruby
class Validator
  def valid?
    rand(100) >= 50 ? true : false
  end
end

class Gman
  attr_reader :validators
  def initialize(validators = Array.new)
    @validators = validators
  end

  def valid?
    @validators.all?(&:valid?)
  end
end

g = Gman.new(Array.new(50) { Validator.new })
g.valid? # => probably false, given the valid? method of the validators
```

This allows you to add any object which responds to `#valid?` into the set of validations. If you wanted to get really crazy, you could even use procs in addition to NaughtyOrNice instances:

```ruby
class Gman
  def valid?
    @validators.all? { |v|
      v.respond_to?(:valid?) ? v.valid? : v.call
    }
  end
end

g = Gman.new(Array.new(50) { Validator.new })
g.validators << proc { `uname`.include?("darwin") }
g.validators.size # => 51
g.valid? # => probably false, given the valid? method of the validators, but now supports one-off procs
```

Anyway, just some thoughts on it. :)