Add return-type annotation to ngenerate/Cartesian method cache
Enhance ncall so only the last argument is expanded on itersym

This allows one to pass additional "pre" arguments
Add @nsplat, a convenience for writing out explicit versions that avoid splatting
Test inference of returned types
Implement copy! using Cartesian

Fixes #5411
Bump CARTESIAN_DIMS to 4