Eliminate C-style array declarations.
Remove nothrow from core.stdc.stdarg

Fix issue 13399
Merge pull request #939 from quickfur/issue13401

Eliminate C-style array declarations.
Merge pull request #940 from Dicebot/revert-745

[REG 2.066] Fix 13399 "va_arg is nothrow yet may throw "
Fix bad assumption about clock speed in MonoTime unit tests.

This code worked just fine so long as the two subsequent calls to
MonoTime.currTime returned different results, but apparently, some
machines, CPUs are fast enough in comparison to their system clock that
that's not guaranteed, so the diff was 0 instead of at least 1, and the
test failed. And looking at it, it probably should have been >= rather
than > anyway (at least based on the variable name - min).

This should make it so that the tests stop failing on Daniel Murphy's
machine.
When allocating a struct with "new", do not pass the pointer type info to the runtime, but the struct type info.
The fix also provides a small performance improvement as it no longer calls the virtual function TypeInfo.next() multiple times
Merge pull request #941 from rainers/fix_13404

Issue 13404 - heap-allocating a struct passes TypeInfo_Pointer to the GC, not TypeInfo_struct
Merge pull request #943 from jmdavis/time

Fix bad assumption about clock speed in MonoTime unit tests.
The GC will now call destructors on heap allocated structs. It is impossible to feasibly implement the invokation of arrays of finalizable structs, due to the inability to know which elements in the array, which may, or may not have been, initialized to begin with. There is also no way to know what the actual length of the array is, you can know how much memory was allocated for it, but not whether there was ever a reference to that point in the array. The destructors for structs in classes are still called as they were previously, which is immediately after the body of the outer class's finalizer.
Added _d_delstruct for use by the delete operator when deleting a pointer to a struct. Also removed the need for a separate array of struct infos by storing the pointer to it at the end of the page for structs allocated by the GC that have finalizers.
Removed the STRUCT_FINALIZE block attribute. Also fixed an issue in my initial implementation of the type info being moved to the end of the page.
Destructors of structs in arrays are now called as well.
As discussed on the PR, removed StructInfo, and replaced all uses of it with TypeInfo_Struct.
I also made the runtime entirely responsible for managing the type info of a finalizable struct. Previously the GC first had to retrieve this info before calling the runtime to do the finalization, even though it's the runtime that determined where to put the type info.
TypeInfo_Struct.destroy needed to check if the pointer is owned by the GC, and if so, have the GC run it's finalizers rather than calling the finalizer directly.
Fixed an edge case where an array that didn't have a large enough allocation was incorrectly being treated as if it did.
Minor changes for effeciency to array finalization, as well as added callStructDtorsDuringGC to core.memory.