fix issue 9959 - Add functional pattern matching for object references

Add the function std.algorithm.castSwitch, which chooses a delegate
based on the class of an object and run that delegate with that object.
Add std.range.enumerate

Fixes issue 5550
Make std.file.getAttributes safe
std.process: Update unittest_burnin to test new functions
std.process: Test random characters at filename start as well
std.math: added frexp for float and double
fix Issue 13446 - Can't use executeShell/escapeShellFileName to redirect to file whose name starts with &

Discovered and verified by -version=unittest_burnin
Merge pull request #2496 from tom-tan/safe-file-getAttributes

Make std.file.getAttributes safe
Make std.file.getLinkAttributes safe
Mark std.file.isDir and its unittest as safe
Merge pull request #2517 from tom-tan/safe-file-isDir

Mark std.file.isDir and its unittest as safe
Merge pull request #2516 from tom-tan/safe-file-getLinkAttributes

Make std.file.getLinkAttributes safe
Mark unittests for std.file.attrIsDir and attrIsFile as safe
Make std.file.isFile, isSymlink and their unittests safe
Merge pull request #2519 from tom-tan/safe-unittest-for-file-attrIsDir-attrIsFile

Mark unittests for std.file.attrIsDir and attrIsFile as safe
Merge pull request #1266 from idanarye/add-functional-pattern-matching-for-object-references

fix issue 9959 - Add functional pattern matching for object references
Update indentation
make a template
remove private
Merge pull request #2508 from 9il/frexp-single-double

std.math: added frexp for double and float