Split Destroy/Terminate actors. Add problem checking.

I suggest squashing the commits since I know that they are slightly disorganized, and the commit messages don't always describe what's been done. Main changes are obviously:

* Separate responsibilities into Terminate and Destroy actors.
* Create `find_problems` actor method to detect issues before execution.
Lets remove these types of super basic checks in your next branch (the one we discussed where we move all this logic into the dry-runs).