Merge upstream 0.78

This brings us up to 0.78. The main feature I've spotted is the custom print handlers, including stateful ones. That should be great to have.

They solve the R16 compilation problems in a slightly different way, which I kept in this merge.  The only real difference between our develop branch and upstream master is a trace flag change from return_trace to exception_trace by Scott.

/cc @slfritchie @evanmcc @jaredmorrow