Fix function interception in the presence of custom interceptors.

Allow intercepting functions defined by the user's program if the user's program also provides an interceptor.

Don't redirect calls that are within an intercepted function or an interceptor function.
Add additional functions to the runtime library for use in interceptor functions.

IsKnownMemoryCovering : calls the active thread listener's isKnownMemoryRegionCovering.
RemoveKnownMemory : calls the active thread listener's removeKnownMemoryRegion.
AddKnownMemory : calls the active thread listener's addKnownMemoryRegion.
SetPointerTargetNewValid : set the pointer target of the intercepted function's returned pointer to be a new, valid pointer target.
SetPointerTargetFromArgument : set the pointer target of the intercepted function's returned pointer to be a copy of the specified argument's pointer target.
CheckCStringRead : update to allow specifying the argument number of the C string parameter.