Fixes ruby 1.9 compatibility issue when evaluating .unless(:empty)

Before source_value would always be converted to a string with :to_s, which would work fine in ruby 1.8 since `[].to_s => ""`. But in ruby 1.9 `[].to_s => "[]"` and `"[]".empty? => false` So now, if the source_value is an Array or Hash it isn't converted to a string.

This maintains backwards compatibility with ruby 1.8