Keep track of Enum's with destructors
Forbid certain types for static items

* Static items may not have value types that own:
    - A destructor
    - A managed pointer
    - A owned pointer

* Mutable static items may not have types that own:
    - A destructor
Closes #9243 Test case
Closes #7364 Test case
Forbid moves out of static items Closes #10577