Optimize the pickler phase

 - move "erroneous type" diagnostic into a crash recovery handler,
    rather than running it proactively
 - move the "unexpanded macros" check into refchecks.

 Cuts this phase in half, from about 1% of compile time to 0.5%.
Merge pull request #3447 from retronym/topic/opt9

Optimize the pickler phase