This patch splits up hwasan thread creation between `__sanitizer_before_thread_create_hook`, `__sanitizer_thread_create_hook`, and `__sanitizer_thread_start_hook`. The linux implementation creates the hwasan thread object inside the new thread. On Fuchsia, we know the stack bounds before thread creation, so we can initialize part of the thread object in `__sanitizer_before_thread_create_hook`, then initialize the stack ring buffer in `__sanitizer_thread_start_hook` once we enter the thread.
- Move `Thread::Init` from `hwasan_thread.cpp` into `hwasan_linux.cpp` and `hwasan_fuchsia.cpp` so they can have separate implementations. The linux implementation uses the same logic of making hwasan thread object while in the thread itself. The fuchsia implementation separates this into two functions: one for initializing tls, stack, and heap_allocation members; and one for initializing the stack ring buffer once we enter the thread.
- `Thread::Init` accepts an optional `InitOptions` struct pointer which will initialize a hwasan thread from miscellaneous parameters. In the fuchsia implementation, this is just the stack bounds.