Add support for execl, execlp, execle, and execvpe.

Also fix some bugs with the interceptors for execv, execvp, execve, and fork.

Correctly set the PreInstruction when raising UnsafeMultithreaded for strtok. (We are overly strict about strtok, denying its use in multithreaded programs regardless of whether or not it is actually being called simultaneously by multiple threads).

Correctly set the PreInstruction when raising NonTerminatedArray in CStdLibChecker::checkCStringArray().

Add the following new runtime error types to support the exec family of functions:
- VarArgsExpectedCharPointer, for non "char *" types passed to execl and friends.
- VarArgsExpectedCStringArray, for non "char * const *" type passed as the final argument to execle.
- VarArgsNonTerminated, for failing to NULL terminate the arguments passed to execl and friends.
- VarArgsPostTerminator, for putting superfluous arguments following the NULL terminator for execl and execlp.