Separate tree_builder/rules.rs code generation from unstable optimiza…
…tions … in Cargo features. The 'codegen' feature is only useful when working on that file, dependency don’t need it. But they might still want NonZero/unsafe_no_drop_flag optimizations when on Rust Nightly. This will reduce breaking of dependent crates when libsyntax changes.