Forcing mbed's build system to respect directory structure

FWIW, it is possible to partially fix this problem using the mbed-cmake build system. You still can’t name a header file the same as something in MBed OS, but you do have complete control over include paths within your own source code. So e.g. you could add only your top-level include directory to the include path, and then do

#include <system1/foo.h>
#include <system2/foo.h>

without any conflicts.