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.h b/policy_manager/generic_variables.h
index 32ea1b9..87ba066 100644
--- a/policy_manager/generic_variables.h
+++ b/policy_manager/generic_variables.h
@@ -37,7 +37,8 @@
   // Creates the variable returning copies of the passed |obj| reference. The
   // reference to this object is kept and it should be available whenever the
   // GetValue() method is called.
-  CopyVariable(const T& ref) : ref_(ref) {};
+  CopyVariable(const std::string& name, const T& ref)
+      : Variable<T>(name), ref_(ref) {}
 
  protected:
   friend class PmCopyVariableTest;