Enable noexcept on Windows, use for a few move constructors.

MSVC complains if you use noexcept with no exception handling mode specified (as we do).
This code disables the warning. noexcept on move constructors allows better optimizations
in some cases.
http://en.cppreference.com/w/cpp/language/noexcept_spec

Updates a few common classes' move constructors to use this.

Reland of https://codereview.chromium.org/2771643002 with landmine. There were some
reports of PCH headers not getting updated and the warning change no taking effect.
I investigated briefly but could not see why PCH dependencies are incorrect.

Review-Url: https://codereview.chromium.org/2769283002
Cr-Original-Commit-Position: refs/heads/master@{#459455}
Cr-Mirrored-From: https://chromium.googlesource.com/chromium/src
Cr-Mirrored-Commit: f78cc27d15ccbd1fd0c5c93aa03b939cd89b9b89
diff --git a/tools/gn/value.cc b/tools/gn/value.cc
index b5e21f0..0afbc7d 100644
--- a/tools/gn/value.cc
+++ b/tools/gn/value.cc
@@ -73,7 +73,7 @@
     scope_value_ = other.scope_value_->MakeClosure();
 }
 
-Value::Value(Value&& other) = default;
+Value::Value(Value&& other) noexcept = default;
 
 Value::~Value() {
 }
diff --git a/tools/gn/value.h b/tools/gn/value.h
index 0428818..3ce0117 100644
--- a/tools/gn/value.h
+++ b/tools/gn/value.h
@@ -43,7 +43,7 @@
   Value(const ParseNode* origin, std::unique_ptr<Scope> scope);
 
   Value(const Value& other);
-  Value(Value&& other);
+  Value(Value&& other) noexcept;
   ~Value();
 
   Value& operator=(const Value& other);