Catalog fixes

As you can see from #1507 the fix there didn't work for *aliases*. This was because the method for resolving the alias (our own `resolveAliasAtPath:`) didn't work for aliases. The FS call we were using is deprecated anyway, so I replaced it with a method that works.

The other fixes were bugs I found whilst testing this