Fixes for GCC 10 compatibility

- pw_kvs: Remove use of std::enable_if that wasn't working property.
- pw_result, pw_rpc: Disable spurious GCC 10 warnings.
- pw_string: Size report code that is never executed was using the same
  pointer for snprintf input and output, which is not legal. This caused
  -Wrestrict warnings. Update the size report code to avoid this.
- Add the -pthread flag in GCC host builds to support building
  pw_thread.
- pw_tokenizer: For host builds, insert the tokenizer sections after
  .debug_info instead of .strtab, since inserting after .strtab does not
  work for GCC.

Change-Id: Ib141a102ed50eb639c8d0bcb236572b3dc142ec1
Reviewed-on: https://pigweed-review.googlesource.com/c/pigweed/pigweed/+/40620
Commit-Queue: Auto-Submit <auto-submit@pigweed.google.com.iam.gserviceaccount.com>
Pigweed-Auto-Submit: Wyatt Hepler <hepler@google.com>
Reviewed-by: Anthony DiGirolamo <tonymd@google.com>
Reviewed-by: Keir Mierle <keir@google.com>
diff --git a/pw_tokenizer/add_tokenizer_sections_to_default_script.ld b/pw_tokenizer/add_tokenizer_sections_to_default_script.ld
index 41cc0c1..56890b0 100644
--- a/pw_tokenizer/add_tokenizer_sections_to_default_script.ld
+++ b/pw_tokenizer/add_tokenizer_sections_to_default_script.ld
@@ -20,6 +20,6 @@
  * The INSERT directive instructs the linker to append the directives in this
  * script to the default linker script, rather than replace the default with
  * this script. It doesn't matter where the tokenizer sections are inserted, so
- * insert them after the standard .strtab section.
+ * insert them after the .debug_info section, which both clang and GCC use.
  */
-INSERT AFTER .strtab
+INSERT AFTER .debug_info