Provide macros for throwing errors with file/function/line specified.
Add Listp, TYPECHECK, and TypeError.

Add Listp predicate and use it when calling the TYPECHECK macro to check
the type of arguments passed to certain functions. If the predicate
fails, TYPECHECK will throw a TypeError.