Catch exceptions thrown by tryLoadLib (on Windows)

`Utils.DynamicLinker.tryLoadLib` uses `loadLibrary` to load DLL
on Windows, which throws `IOException` upon failure such as missing
file error. Previously we only checks whether the return value is `nullPtr`
or not.

This commit adds a handler that tries to catch the `IOException` thrown
by `loadLibrary` and returns `nullPtr` instead.