Create SkSLProgram.cpp.

This is motivated by a followup CL which adds a new method to Program.
However, since Program now has a .cpp file, it has gained IWYU's
attention, and the subsequent cleanup has had a massive blast radius.
Missing #includes have been added throughout Skia.

In a few spots, IWYU was making incorrect suggestions, and I was able
to fix them by simplifying some complex expressions--in particular, it
didn't seem to understand that ThreadContext::SymbolTable() is related
to the SkSLSymbolTable header. There were also a few incorrect IWYU
suggestions which I wasn't able to work around without `IWYU pragma:
keep`.

Change-Id: Ia17b6d0e8ad0cfdd27739da24bb957fcc9a9670f
Reviewed-on: https://skia-review.googlesource.com/c/skia/+/604337
Reviewed-by: Arman Uguray <armansito@google.com>
Reviewed-by: Kevin Lubick <kjlubick@google.com>
42 files changed