Shadow copy optimize and source destination checks

Handle case where source is a UNC path, and/or destination is a UNC path. Now it will backup from source UNC path to destination UNC path. (or any combination of UNC or drive letter in source and destination)
Check that source path exists and backup destination drive or \\server\share exists. Log error if not, rather than bothering to run "ln" at all.
Optimize use of shadow copy - if the same drive letter repeats in the source list then keep using the same shadow copy.
Minor text and white space cleanup.
The diff listing looks horrible because large blocks of code were tabbed in.