With Boost 1.78 (installed on my system), I get a compiler error:

```
./fs.h: In function ‘fs::path fs::operator+(fs::path, fs::path)’:
./fs.h:91:8: error: no match for ‘operator+=’ (operand types are ‘fs::path’ and ‘std::remove_reference<fs::path&>::type’ {aka ‘fs::path’})
   91 |     p1 += std::move(p2);
      |     ~~~^~~~~~~~~~~~~~~~
```

It appears that in Boost 1.78, `operator+=` became a template function, and our `path` class which subclasses `boost::filesystem::path::path` no longer has an `operator+=` which will work with it.

I also opened an issue with boost: https://github.com/boostorg/filesystem/issues/223
path& operator=(const char* c) { boost::filesystem::path::operator=(c); return *this; }
    path& operator/=(const char* c) { boost::filesystem::path::operator/=(c); return *this; }
    path& append(const char* c) { boost::filesystem::path::append(c); return *this; }
    
    path(std::string) = delete;
    path& operator=(std::string) = delete;
    path& operator/=(std::string) = delete;
    path& append(std::string) = delete;
    
    std::string string() const = delete;
    
    std::string u8string() const { return boost::filesystem::path::string(); }
};
static inline path u8path(const std::string& string)
{
    return boost::filesystem::path(string);
}
static inline path system_complete(const path& p)
{
    return boost::filesystem::system_complete(p);
}
static inline bool exists(const path& p)
{
    return boost::filesystem::exists(p);
}
static inline auto quoted(const std::string& s)
{
    return boost::io::quoted(s, '&');
}
static inline path operator+(path p1, path p2)