gin: Add out-of-line copy ctors for complex classes.

This patch adds out of line copy constructors for classes that our
clang-plugin considers heavy. This is an effort to enable copy
constructor checks by default.

BUG=436357
R=aa@chromium.org, dcheng@chromium.org, thakis@chromium.org

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

Cr-Commit-Position: refs/heads/master@{#377655}
diff --git a/gin/dictionary.cc b/gin/dictionary.cc
index 018a82c66..54f1a4a5 100644
--- a/gin/dictionary.cc
+++ b/gin/dictionary.cc
@@ -16,6 +16,8 @@
       object_(object) {
 }
 
+Dictionary::Dictionary(const Dictionary& other) = default;
+
 Dictionary::~Dictionary() {
 }
 
diff --git a/gin/dictionary.h b/gin/dictionary.h
index 64736b1d..5a61cc7 100644
--- a/gin/dictionary.h
+++ b/gin/dictionary.h
@@ -26,6 +26,7 @@
  public:
   explicit Dictionary(v8::Isolate* isolate);
   Dictionary(v8::Isolate* isolate, v8::Local<v8::Object> object);
+  Dictionary(const Dictionary& other);
   ~Dictionary();
 
   static Dictionary CreateEmpty(v8::Isolate* isolate);
diff --git a/gin/object_template_builder.cc b/gin/object_template_builder.cc
index 158131f..a40df60 100644
--- a/gin/object_template_builder.cc
+++ b/gin/object_template_builder.cc
@@ -145,6 +145,9 @@
   template_->SetInternalFieldCount(kNumberOfInternalFields);
 }
 
+ObjectTemplateBuilder::ObjectTemplateBuilder(
+    const ObjectTemplateBuilder& other) = default;
+
 ObjectTemplateBuilder::~ObjectTemplateBuilder() {
 }
 
diff --git a/gin/object_template_builder.h b/gin/object_template_builder.h
index 3cfd4a3..72369ee 100644
--- a/gin/object_template_builder.h
+++ b/gin/object_template_builder.h
@@ -89,6 +89,7 @@
 class GIN_EXPORT ObjectTemplateBuilder {
  public:
   explicit ObjectTemplateBuilder(v8::Isolate* isolate);
+  ObjectTemplateBuilder(const ObjectTemplateBuilder& other);
   ~ObjectTemplateBuilder();
 
   // It's against Google C++ style to return a non-const ref, but we take some