Improve naming character handling in windows

Rather than replacing all invalid characters with _ this does something
slightly more sophisticated i.e.

" -> '
* -> +
:space -> space - space
: -> -
< -> {
> -> }
? -> _
| -> !

e.g. a track "Is She Really Going Out With Him?" on album "Daily Mail: Solid Gold, Volume 1: Rocking All Over the World" will be named:

"Daily Mail - Solid Gold, Volume 1 - Rocking All Over the World/Is She Really Going Out With Him_"

rather than

"Daily Mail_ Solid Gold, Volume 1_ Rocking All Over the World/Is She Really Going Out With Him_"

There is probably scope for further tweaking of the dictionary.
Further improvement to remove trailing .
Change / to - not _
Use array (definite order) instead of dict