Skip validation if value is empty

This currently causes a size validation test to fail (as `Array.new`, `Hash.new`, and `Set.new` respond to `empty?` and `empty?` returns true). I didn't change that test because I wanted to hear opinions first.