Move all cache and build files to dirs specified by flags.

Add new representation of elm source file paths (SrcFile) that keeps
track of the top of the module hierarchy.

Also add a function to parse the components of a Module name from a file
directly.

Fixes https://github.com/elm-lang/Elm/issues/618.
Why is the `getModuleNames` function needed? I don't really get what this function is doing.