ChainedIncludesSource: avoid copying n*(n+1)/2 file contents into memory

Just reference the data instead with shallow MemoryBuffer instances.
Move ChainedIncludesSource into the implementation

This doesn't need to be in the headers.