Move gnu licensed GIOGetMimeType() code out of BSD giomime.c

This code should have been put in a fresh new file under the correct
license in the first place, instead of having intermingled BSD and
GNU code in same file. Intermingled code already caused enough spats
and fits for anyone looking hard enough at past docs, issues, and forks.
Add GIOguessMimeType() for operating systems that have weak mime returns

Many operating systems make use of the dot3 extension on filenames to
differentiate file types. This routine reads a list of known file ext
types and generates a corresponding mime code to be passed back to code.
GImageRead guesses mime. GIOGetMimeType returns 0

Converted GIOGetMimeType() to return zero so that we don't have to test
for NULL. Changes if (result!==NULL) to simpler if ( result ) test.
GImageRead() does a dot3 extension guess before trying mime, so we no
longer need to have the latter dot3 check of filename afterwards.
A few fixes for GFileChooserPickIcon()

Resolve issue #1433 and free() memory from GIOGetMimeType().
Added GIOguessMimeType() for OSes with weak mime identification.
Moved mime=u_to_c after e->isdir check to avoid extra unnecessary work.
Update giofile.c to free GIOGetMimeType() mem. Added GIOgeussMimeType()
Retire older GIOguessMimeType() and related unichar files.
Add g_giomime.c to Makefile.am as a seperate file

Travis make check did not understand the #include "g_giomime.c"
Merge pull request #1477 from JoesCat/master

Resolve #1433 to free memory and #1434 to guess file types with less advanced mime check