[Driver] Parallelize reading initial object files.
[Driver] Add maximum concurrency option.
Instrument things.
[Passes] Parallelize the layout pass sort.
[ELF] Make addressOfAtom thread safe.

The expression _atomToAddressMap[atom] may modify _atomToAddressMap.
[Core] Add parallel_for_each.
Parallel write.
[Core] Add ConcurrentUnorderedSet.

This is a a Split Ordered List based lock-free unordered set.
Parallelize reading archive members.
Map. Still duplicates way too much code. WILLFIX.
Don't mmap files multiple times.
[Core] Add ConcurrentUnorderedMap.
Think about making X86_64TargetInfo concurrent.
Start working on a thread local region allocator.
Allocator stuff.
Use getMSBIndex.
Finish up the allocator stuff.
MSVC is evil.
Use GetCurrentThreadID instead of std::this_thread::get_id() on Windows because get_id is horrendously slow.
[Core] Add custom partial atomic implementation for MSVC because the default implementation is slow.