PolicyManager: Add an base Variable class without type.

The Variable<T> is a parametric type that requires to know the type T
of the exported variable. This new BaseVariable class isn't
parametric and allows to keep a list of variable pointers on the
EvaluationContext to cache their provided results and dump the names
of those variables.

BUG=chromium:338590
TEST=unittest passes.

Change-Id: I1677e3975d44575ed12f35c36381101d4379c5fc
Reviewed-on: https://chromium-review.googlesource.com/184428
Tested-by: Alex Deymo <deymo@chromium.org>
Reviewed-by: Alex Deymo <deymo@chromium.org>
Commit-Queue: Alex Deymo <deymo@chromium.org>
diff --git a/policy_manager/generic_variables_unittest.cc b/policy_manager/generic_variables_unittest.cc
index 14b40d3..15ea3d7 100644
--- a/policy_manager/generic_variables_unittest.cc
+++ b/policy_manager/generic_variables_unittest.cc
@@ -13,7 +13,7 @@
 TEST(PmCopyVariableTest, SimpleTest) {
   int obj_int = 5;
 
-  CopyVariable<int> var(obj_int);
+  CopyVariable<int> var("var", obj_int);
 
   string errmsg = "Nope";
 
@@ -50,7 +50,7 @@
   ASSERT_FALSE(obj.copied_);
 
   string errmsg;
-  CopyVariable<ConstructorTestClass> var(obj);
+  CopyVariable<ConstructorTestClass> var("var", obj);
   const ConstructorTestClass* value =
       var.GetValue(TimeDelta::FromSeconds(1), &errmsg);
   EXPECT_NE(value, static_cast<void*>(NULL));