Added better error messages for ill-formed generics

code like string[int] or int[float] was producing internal compiler errors, I changed the InternalAssert to a localError that actually says why the code is wrong.