Add specific errors for type and cast exceptions

OverloadException was used for a number of internal and user-visible errors. Replace with specific exceptions with clearer error messages.