Fix incorrect output path when input file refers to other files

For issue #21 

To keep a source directory structure, we introduce a new temporary file.

The new temporary file is created in the source root directory so that the common path of output files is the source root and tsc never skips any directory in output.

However, creating a temporary file may fail compilation if the running user has no write-permission on the source directory, or it may increase the time of compilation.

So we also add `keepTree` option so that users can skip creating the temporary file.