We keep serialize for method dealing with streams. If it returns a `std::string`, let's use `toString`.
Replace the stub implementation of invalidation with the proper implementation. A ReadPathCache is added to each global so that it can keep tracks of what target are associated to which read paths.