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.
Since this is really about verifying the inputs a user has supplied.. how about `def verify_inputs()`?