[WIP] Argument type validation with user-friendly error messages

While writing this I was actually trying to avoid conversion completely. I'd rather consider `type_` a type that a variable must be of when passed to the parser (this is especially important for JSON). If it's not of that type the parser fails, but not tries to convert.
My motivation is that we actually used conversion not for conversion per se but for validation - if we could not convert we fail. And I replaced it with just type checking.
Please let me know if I'm missing the point here.