avoid redundant translation of items during monomorphization

Currently, each time a function is monomorphized, all items within that function are translated.  This is unnecessary work because the inner items already get translated when the function declaration is visited by `trans_item`.  This patch adds a flag to the `FunctionContext` to prevent translation of items during monomorphization.
When `trans_item` encounters the definition of the polymorphic function, even though it can't translate the function itself, it still walks through the function body looking for inner items to translate.  That's why the example in [#7349](https://github.com/rust-lang/rust/issues/7349#issuecomment-31392811) has three copies of the body of `inner`: one from the definition, and two extras from the two monomorphizations of `outer`.