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%.

Review by @adriaanm