[lib][libc] fix memset for 64bit targets

The memset implementation tries to optimize the performance by writing
sizeof(size_t) data at a time. size_t data is dependent on architecture
and memset assumed it to be 32bit.
[scripts][do-arm64] do something different if on Darwin
[make] miscellaneous make system tweaks

-Have arch set the default optimization level. Most will use
 O2, but arm-m sets to Os.
-Make the link time garbage collection be optional. Only set
 for arm-m.