[sw] Require absolute import paths in software.

This change modifies meson_init.sh so that meson does not emit -I
arguments which are rooted at REPO_TOP. Concretely, any C/C++ file
that wants to use sw/lib/my_cool_difs.h must write

- `#include "sw/lib/my_cool_difs.h"`

This will improve include hygine significantly as the project grows
on the software side.

Meson really, really wants to believe in a Make-like project where
we don't care about this, and where you can include foo.h as foo.h
if your TU is in the same directory. However, Ninja doesn't care,
so we do minor postprocessing to remove precarious -I arguments.

Due to how Meson treats generated headers, though, there really
isn't a good way to make enforce this on generated files. For now,
generated register files are included in the old way, but for
tracking purposes we adopt the following convention:

- `#include "my_cool_peripheral_regs.h"  // Generated.`

"Generated" includes are placed in a separate stanza before normal
includes, but after system library imports.

The existing Makefile flow should have been preserved; I just
restricted the -I arguments to REPO_TOP.
diff --git a/sw/host/spiflash/Makefile b/sw/host/spiflash/Makefile
index 7a40387..34c4a8d 100644
--- a/sw/host/spiflash/Makefile
+++ b/sw/host/spiflash/Makefile
@@ -8,8 +8,9 @@
 MPSSE_DIR = ../vendor/mpsse
 MPSSE_OBJS = $(MPSSE_DIR)/mpsse.o $(MPSSE_DIR)/support.o
 
-CFLAGS += -I${MPSSE_DIR} -std=gnu99
-CXXFLAGS += -I . -I${MPSSE_DIR} -Wall -std=c++14
+INC += -I../../.. # i.e., $REPO_TOP.
+CFLAGS += $(INC) -std=gnu99
+CXXFLAGS += $(INC) -Wall -std=c++14
 LDFLAGS += -lcrypto -lftdi1 -lusb-1.0 -L/usr/lib/x86_64-linux-gnu
 DEPS  = spi_interface.h updater.h verilator_spi_interface.h ftdi_spi_interface.h
 OBJS := verilator_spi_interface.o updater.o ftdi_spi_interface.o
diff --git a/sw/host/spiflash/ftdi_spi_interface.cc b/sw/host/spiflash/ftdi_spi_interface.cc
index 37a0ec8..163e9e0 100644
--- a/sw/host/spiflash/ftdi_spi_interface.cc
+++ b/sw/host/spiflash/ftdi_spi_interface.cc
@@ -2,7 +2,7 @@
 // Licensed under the Apache License, Version 2.0, see LICENSE for details.
 // SPDX-License-Identifier: Apache-2.0
 
-#include "ftdi_spi_interface.h"
+#include "sw/host/spiflash/ftdi_spi_interface.h"
 
 #include <assert.h>
 #include <fcntl.h>
@@ -16,7 +16,7 @@
 
 // Include MPSSE SPI library
 extern "C" {
-#include <mpsse.h>
+#include "sw/host/vendor/mpsse/mpsse.h"
 }
 
 namespace opentitan {
diff --git a/sw/host/spiflash/ftdi_spi_interface.h b/sw/host/spiflash/ftdi_spi_interface.h
index e68bbc7..01e9f1d 100644
--- a/sw/host/spiflash/ftdi_spi_interface.h
+++ b/sw/host/spiflash/ftdi_spi_interface.h
@@ -8,7 +8,7 @@
 #include <memory>
 #include <string>
 
-#include "spi_interface.h"
+#include "sw/host/spiflash/spi_interface.h"
 
 namespace opentitan {
 namespace spiflash {
diff --git a/sw/host/spiflash/meson.build b/sw/host/spiflash/meson.build
index e41921a..5ffd349 100644
--- a/sw/host/spiflash/meson.build
+++ b/sw/host/spiflash/meson.build
@@ -10,6 +10,7 @@
     'updater.cc',
     'verilator_spi_interface.cc',
   ],
+  implicit_include_directories: false,
   dependencies: [
     dependency('libcrypto', native: true),
     libmpsse
diff --git a/sw/host/spiflash/spiflash.cc b/sw/host/spiflash/spiflash.cc
index 6d56b74..52e550c 100644
--- a/sw/host/spiflash/spiflash.cc
+++ b/sw/host/spiflash/spiflash.cc
@@ -10,10 +10,10 @@
 #include <sstream>
 #include <string>
 
-#include "ftdi_spi_interface.h"
-#include "spi_interface.h"
-#include "updater.h"
-#include "verilator_spi_interface.h"
+#include "sw/host/spiflash/ftdi_spi_interface.h"
+#include "sw/host/spiflash/spi_interface.h"
+#include "sw/host/spiflash/updater.h"
+#include "sw/host/spiflash/verilator_spi_interface.h"
 
 namespace {
 
diff --git a/sw/host/spiflash/updater.cc b/sw/host/spiflash/updater.cc
index 9f5cc2d..f4f4cfe 100644
--- a/sw/host/spiflash/updater.cc
+++ b/sw/host/spiflash/updater.cc
@@ -2,7 +2,7 @@
 // Licensed under the Apache License, Version 2.0, see LICENSE for details.
 // SPDX-License-Identifier: Apache-2.0
 
-#include "updater.h"
+#include "sw/host/spiflash/updater.h"
 
 #include <assert.h>
 
diff --git a/sw/host/spiflash/updater.h b/sw/host/spiflash/updater.h
index c3a0d2f..b74978f 100644
--- a/sw/host/spiflash/updater.h
+++ b/sw/host/spiflash/updater.h
@@ -16,7 +16,7 @@
 #include <string>
 #include <vector>
 
-#include "spi_interface.h"
+#include "sw/host/spiflash/spi_interface.h"
 
 namespace opentitan {
 namespace spiflash {
diff --git a/sw/host/spiflash/verilator_spi_interface.cc b/sw/host/spiflash/verilator_spi_interface.cc
index 2d0cc1d..77d5b95 100644
--- a/sw/host/spiflash/verilator_spi_interface.cc
+++ b/sw/host/spiflash/verilator_spi_interface.cc
@@ -2,7 +2,7 @@
 // Licensed under the Apache License, Version 2.0, see LICENSE for details.
 // SPDX-License-Identifier: Apache-2.0
 
-#include "verilator_spi_interface.h"
+#include "sw/host/spiflash/verilator_spi_interface.h"
 
 #include <fcntl.h>
 #include <termios.h>
diff --git a/sw/host/spiflash/verilator_spi_interface.h b/sw/host/spiflash/verilator_spi_interface.h
index b39ef1d..5f8e67d 100644
--- a/sw/host/spiflash/verilator_spi_interface.h
+++ b/sw/host/spiflash/verilator_spi_interface.h
@@ -7,7 +7,7 @@
 
 #include <string>
 
-#include "spi_interface.h"
+#include "sw/host/spiflash/spi_interface.h"
 
 namespace opentitan {
 namespace spiflash {
diff --git a/sw/host/vendor/mpsse/meson.build b/sw/host/vendor/mpsse/meson.build
index 119aa90..4f72d6f 100644
--- a/sw/host/vendor/mpsse/meson.build
+++ b/sw/host/vendor/mpsse/meson.build
@@ -3,13 +3,15 @@
 # SPDX-License-Identifier: Apache-2.0
 
 libmpsse = declare_dependency(
-  include_directories : include_directories('.'),
   link_with: static_library(
     'mpsse',
     sources: [
       'mpsse.c',
       'support.c'
     ],
+    c_args: [
+      '-I' + meson.source_root() + '/sw/host/vendor/mpsse'
+    ],
     dependencies: [
       dependency('libftdi1', native: true),
       dependency('libusb-1.0', native: true),