Implement new rules for build/cache file locations.

Files in --src-dirs are treated as if they were in the current
directory. Files in a package named "packageName" will have build files
put in cache/packageName/

Adds new representation of elm source file paths (SrcFile) that keeps
track of metadata concerning sources.

Reworking of https://github.com/elm-lang/Elm/pull/709. Fixes https://github.com/elm-lang/Elm/issues/618.