Refactor a bit & -M bug fixed.

1. Use llvm::tool_output_file instead of llvm::raw_stream. The former
can automatically deleted itself from filesystem once the compilation failed.
2. Fix -M bug which causes segfault previously.
diff --git a/slang.h b/slang.h
index 67f8560..a614135 100644
--- a/slang.h
+++ b/slang.h
@@ -15,7 +15,7 @@
 #include "slang_diagnostic_buffer.h"
 
 namespace llvm {
-  class raw_ostream;
+  class tool_output_file;
 }
 
 namespace clang {
@@ -100,9 +100,9 @@
   OutputType mOT;
 
   // Output stream
-  llvm::OwningPtr<llvm::raw_ostream> mOS;
+  llvm::OwningPtr<llvm::tool_output_file> mOS;
   // Dependency output stream
-  llvm::OwningPtr<llvm::raw_ostream> mDOS;
+  llvm::OwningPtr<llvm::tool_output_file> mDOS;
 
   std::vector<std::string> mIncludePaths;