set initial file icons based only on type

Calling `iconForFile:` causes the file's attributes to be read from disk, which could be very slow in some cases, defeating the purpose of `setQuickIcon…`. Instead, we do it in `loadIcon…` which runs in the background.

fixes #1431
add quick icons for folders

They typically don't have an extension, so they need to be handled
separately.
update icons on the main thread

to avoid several attempting to update simultaneously
always call `selectObjectValue:` when the object changes

`setObjectValue:` is lacking some smarts for comparing objects and
managing observers. `selectObjectValue:` takes care of that, as well as
the two lines that were removed.
Merge pull request #1490 from skurfer/fileIcons

set initial file icons based only on type