cleanup main

seems like these two lines are common to both paths and in fact
the different classes allocated are derived from the same common
base class so this makes sense to me.

BUG=
R=stichnot@chromium.org

Review URL: https://codereview.chromium.org/1494753003 .

Patch from Reed Kotler <rkotlerimgtec@gmail.com>.
diff --git a/src/IceCompileServer.h b/src/IceCompileServer.h
index 9b02f92..ca02577 100644
--- a/src/IceCompileServer.h
+++ b/src/IceCompileServer.h
@@ -41,12 +41,11 @@
 /// request immediately. When run in the browser, it blocks waiting for a
 /// request.
 class CompileServer {
-  CompileServer() = delete;
   CompileServer(const CompileServer &) = delete;
   CompileServer &operator=(const CompileServer &) = delete;
 
 public:
-  explicit CompileServer(Compiler &Comp) : Comp(Comp) {}
+  CompileServer() = default;
 
   virtual ~CompileServer() = default;
 
@@ -55,10 +54,15 @@
   virtual ErrorCode &getErrorCode() { return LastError; }
   void transferErrorCode(ErrorCodes Code) { LastError.assign(Code); }
 
-protected:
-  Compiler &getCompiler() const { return Comp; }
+  int runAndReturnErrorCode() {
+    run();
+    return getErrorCode().value();
+  }
 
-  Compiler &Comp;
+protected:
+  Compiler &getCompiler() { return Comp; }
+
+  Compiler Comp;
   ErrorCode LastError;
 };
 
@@ -69,8 +73,7 @@
   CLCompileServer &operator=(const CLCompileServer &) = delete;
 
 public:
-  CLCompileServer(Compiler &Comp, int argc, char **argv)
-      : CompileServer(Comp), argc(argc), argv(argv) {}
+  CLCompileServer(int argc, char **argv) : argc(argc), argv(argv) {}
 
   ~CLCompileServer() final = default;