Non-throwing validation and coercion

Methods to validate (`validation_errors`) and coerce (`coerce`) that
returning errors instead of raising, but also make it hard to do
something like:

    if RSchema.validate(a, b)
      # wrong! it could have returned an error
      it_is_valid 
    end