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.
To see why you need to parse the Module name to get this information, consider the following. Where should the `elmi`/`elmo` files go in `cache` for the following files and how do we determine that?

1. `Foo/Bar/Baz.elm` for module `Foo.Bar.Baz`
2. `tests/elm/Test.elm` for module `Main`
3. `../libs/IO/IO/Runner.elm` for module `IO.Runner`
4. `/home/max/code/elm/libs/IO/IO/Runner.elm` for module `IO.Runner`