Custom DLLs in OpticStudio: An overview of user-defined surfaces, objects, and other DLL types