Isolate unixisms in sshtool

This removes all bash-specific behaviour from SshTool and its implementations, leaving them as pure interfaces to the SSH remote system. Methods with bash-specific behaviour are moved into "BashHelper" classes. This opens up the possibility of using SshTool with remote systems that do not run bash, in particular Windows clients. This commit takes a low-risk approach that reorganises the structure of the code but make minimal changes to method bodies themselves, as the SSH remote interaction is fragile and finely-tuned.

Future work - merge SshjToolBashHelper and SshCliToolBashHelper into one class (it's not particularly clear why they need different implementations) along with the BashHelper interface and SshToolBashHelper abstract class.