Cleaner fix for LiveDevMultiBrowser infinite loop

See discussion here for context: https://github.com/adobe/brackets/pull/10192#discussion_r21957109.

Move shared code into FileUtils (with unit tests) to minimize diff in the `_getInitialDocFromCurrent()` code that is duplicated between the two Live Preview impls.

Also...
- fixes an unhit edge case in getParentFolder() (now getParentDirectory()) that behaves differently across platforms
- removes duplicate copy of getFilenameWithoutExtension() in LiveDevelopment.js (copy in FileUtils was identical)
- add/fix some unit tests for two existing FileUtils APIs
i think `getParentDirectoryPath` is cleaner to indicate it returns a string (and analogous to `getDirectoryPath`).