[sw] Cleanup Meson Configuration

This change deduplicates most of our compiler argument processing that
is done in meson.build, so that our compiler instances agree more. It
also makes some native: true vs native: false options explicit.

This change also moves the include purging into a "postconf" script, as
supported by meson for this exact purpose. This means if ninja needs to
re-run meson, includes will (correctly) remain purged.

This change also removes some default build options that were causing
warnings when reconfiguring meson. Unfortunately we cannot remove them
all as the following warning is misleading, and those build options do
cause effects: `WARNING: Unknown options: "build.c_std, build.cpp_std"`.

Signed-off-by: Sam Elliott <selliott@lowrisc.org>
diff --git a/meson_options.txt b/meson_options.txt
index 26e32e9..73ef890 100644
--- a/meson_options.txt
+++ b/meson_options.txt
@@ -21,3 +21,9 @@
   type: 'boolean',
   value: false,
 )
+
+option(
+  'keep_includes',
+  type: 'boolean',
+  value: true,
+)