Refactor shell executor tests
What does this MR do?
Refactors the shell executor tests to take advantage of nesting in go1.7; tests all existing cases against all installed shells.
Why was this MR needed?
I want to add more tests to this as integration tests for shells/*.go, thought I'd clean it up first
Are there points in the code the reviewer needs to double check?
Do we test clean against cmd.exe and powershell.exe ? we don't test clean pre-this-MR
/cc @tmaczukin