`ForeignDef` items may correspond to functions, statics, or types. Based on [`rustc_hir::ForeignItem`](https://doc.rust-lang.org/nightly/nightly-rustc/rustc_hir/struct.ForeignItem.html), we need an equivalent of [`ForeignItemKind`](https://doc.rust-lang.org/nightly/nightly-rustc/rustc_hir/hir/enum.ForeignItemKind.html#). For these variants: - `Fn`: Can `FnDef` be reused? - `Static`: The existing information on `CrateDef` should be enough. - `Ty`: Not sure if it is stable yet (#rust/43467) Similar to existing kind types, the following changes are expected: - adding method `foreign_item_kind` to `Context` - adding method `kind` to `FnDef` calling the method above <!-- TRIAGEBOT_START --> <!-- TRIAGEBOT_ASSIGN_START --> <!-- TRIAGEBOT_ASSIGN_DATA_START$${"user":"momvart"}$$TRIAGEBOT_ASSIGN_DATA_END --> <!-- TRIAGEBOT_ASSIGN_END --> <!-- TRIAGEBOT_END -->