Eagerly construct bodies of THIR With this PR: - the THIR is no longer constructed lazily, but is entirely built before being passed to the MIR Builder - the THIR is now allocated in arenas instead of `Box`es However, this PR doesn't make any changes to the way patterns are constructed: they are still boxed, and exhaustiveness checking is unchanged. Implements MCP rust-lang/compiler-team#409. Closes rust-lang/project-thir-unsafeck#1. r? `@ghost` cc `@nikomatsakis` `@oli-obk`