Shadow copy optimize and source destination checks

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.
Handle relative paths in source or destination

At least it works then (source or destination ..\..\zzz or subfolder\backupdir etc. is resolved to the full path. Then the rest of the code can handle it easily, checking for drive letter etc.
Better than red powershell errors spewing out, hola.
Merge pull request #3 from phil-davis/master

Shadow copy optimize and source destination checks