Notes:
This makes it easier to create other synthetic functions, which don't need the SyntheticFunction instance to own the body as a std::string.
I should have done this as part of D43933, but at the time I thought what I was doing was better... oh well.