Test + fix for non-real files causing exceptions in userscriptscollector

This patch prevents Diamond's UserScriptsCollector from attempting to execute directories and other non-real "files" that happen to be set executable. When such a file makes its way into your userscripts folder (it can happen!) the collector would raise e.g. OSError or IOError, and cease execution.

Not only does this generate log spam, it (silently\*) prevents any userscripts that would come after the bad file from executing.

Note that as of this commit 1 test is failing; this test failed prior to the commit as well. (It's in one of the puppet modules.)

----

\* Most other parts of Diamond behave in a sensible "complain and keep going" manner, so it's easy for administrators to see a traceback and assume that only the one file causing the traceback was skipped. In this situation that's not the case.