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.
This function is only used https://github.com/maxsnew/Elm/blob/df592906b5ad38554ba3d57def8d61fe5b6b672f/compiler/Compiler.hs#L41 for the input files, not the ones from `--src-dir`.