improve present validation to not assume map value is a string

Hello.

I was trying out this library and I saw that it raised a conversion exception when I tried to validate if a number as a map value was present. I don't think it should it should raise an exception, so I made these changes. 

Separately, I think it would be more intuitive if the present validation only checked if a key was in a map, not that it was a non-empty string. I will make an issue about this.

- Ryan