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.
I need `getModuleNames` because I need to get the number of levels of the Module hierarchy above the module in the file given. Before you only had `getModuleName` which parses a module name `String`, including `.`'s. However I would immediately need to (split)[https://github.com/elm-lang/Elm/blob/master/compiler/Build/Dependencies.hs#L77-L83] it into its components. This way we skip that unnecessary step. Really, I think we should be representing all module names as `[String]` or something, but I didn't want to make that change in this pr.