Add support for varying types in exported functions.

Add support for varying types in exported functions.  This can be "simpler" alternative to the SOA mechanics as well as making it easier to pass data already in SOA form into ISPC.

Compiling for multiple targets now generates several header files.  One for each target.  The header for the first target will be generated twice: headerfilename.h and headerfilename_target.h  Any varying types in exported functions will be expanded into an array sized by the target's vectorwidth.