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 think all of this information is available when you are finding all of the relevant files around [here](https://github.com/elm-lang/Elm/blob/master/compiler/Build/Dependencies.hs#L109). That already parses in to get the name and dependencies.

It seems like a hack because it seems like we are getting this information twice in two different ways.

I also don't think we ever need to read stuff from the file because we know all of the possible source directories that could be used. When we find a file, we know exactly what directory it was in.