* Variadic version is compiler-switched on variadic template support.
* Variadic version doesn't repeatedly include lots of the same headers to generate code.
* Tidying up of some original delegate stuff.
* Removed return type from lambda in K2Node_TemporaryVariable which was causing a Clang ICE.
* TTuple, TIntegerSequence and associated functionality - generic, but currently only implementation details of delegates and not yet for use in general code because there is no non-variadic version of them.
* MessageRouter and MessageTracer updated to use an actual delegate instead of implementation-specific identifiers.
* TTypeWrapper and TUnwrapType added to aid 'recursive' template definitions.
* C4373 disabled on VC - was only hitting this warning during development, but it's good to disable it anyway, as it's a 'this code is now standard' warning.
#codereview robert.manuszewski,mike.fricker,max.preussner,gareth.martin
[CL 2312735 by Steve Robb in Main branch]
Please note that file comments had no purpose in nearly all cases and just added visual clutter. The two files that had meaningful file comments had their comments moved into the corresponding classes. There are still hundreds of file comments left in other files that will be removed over time.
Also cleaned up some random stuff along the way:
- relative paths to public headers within the same module are no longer necessary (automatically discovered by UBT now)
- header guards are deprecated, use #pragma once instead (all compilers support it now)
- space between multiple template brackets is no longer required (all compilers support >> now)
- NULL to nullptr, OVERRIDE to override
- spelling errors, whitespace, line breaks
[CL 2104067 by Max Preussner in Main branch]