Add support for pointers to varying data in exported functions.

This patch adds support for pointers to varying data in exported functions.  This is an alternative to using the soa<> constructs that's a bit more "pure" to the ISPC language.

Per earlier remarks, the support has been beefed up to handle the case where multiple different targets are compiled at once.  The dispatch function will now have a signature that treats any pointers to varyings as essentially "void *"s that get casted to the appropriate pointer type at runtime.  The emitted target-generic header file provides multiple definitions of structs/etc with different sizes.  The stdlib now includes a new exported function that can be called from C/C++ to determine at runtime the value of programCount that will be used by dispatched functions.