Fix showing/hiding file extensions.

We were misunderstanding the SHGDN flags to GetDisplayNameOf. We were assuming Explorer would set the SHGDN_FORPARSING flag if the user settings meant they wanted to see the file extension.  But Explorer doesn't tell us whether the user wants extensions or not.  We have to work that out for ourselves.  The FORPARSING flag just *forces* extensions on in case the system needs them to parse them.  The result for us was that we kept returning the name without the file extension because that was what we thought we were being asked for.

This change makes Swish decides whether to show extensions based on the settings in the registry.  Thanks to Chaot_s for pointing us to the registry keys.

Addresses #90.
Only hide extensions of known file types.

The previous change was hiding the extension of all file, if the user had "Hide extensions for known file types" set.

This change looks up each file's type in the registry to decide whether to show the extension based on the presence of the AlwaysShowExt value.  The "Unknown" file type includes that value, so this change fixes the problem and also takes care of other file types that should always show their extension regardless of user setting.

Closes #90.
Merge branch 'fix/file_extensions' into develop