More base::Values-related bare pointer -> scoped_ptr conversions

main change: Value::CreateNullValue returns a scoped_ptr

BUG=none

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

Cr-Commit-Position: refs/heads/master@{#329443}
diff --git a/base/values.h b/base/values.h
index ca046f1..e32edec 100644
--- a/base/values.h
+++ b/base/values.h
@@ -64,7 +64,7 @@
 
   virtual ~Value();
 
-  static Value* CreateNullValue();
+  static scoped_ptr<Value> CreateNullValue();
 
   // Returns the type of the value stored by the current Value object.
   // Each type will be implemented by only one subclass of Value, so it's
@@ -494,6 +494,9 @@
   ListValue* DeepCopy() const override;
   bool Equals(const Value* other) const override;
 
+  // Preferred version of DeepCopy. TODO(estade): remove DeepCopy.
+  scoped_ptr<ListValue> CreateDeepCopy() const;
+
  private:
   ValueVector list_;