AU/PM: Some refactoring

* Introduced a Provider base class, used for defining interface and
  shared logic (e.g. initialization semantics).

* Eliminated the Finalize() method in providers; release of resources is
  done in destructors (safer, less boilerplate).

* Revised CamelCase capitalization: PMFooTest -> PmFooTest, plus various
  cosmetics.

BUG=None
TEST=Builds and passes unit tests.

Change-Id: Ib959dfd2522e00928d735202b1448c9436cbb00b
Reviewed-on: https://chromium-review.googlesource.com/184352
Tested-by: Gilad Arnold <garnold@chromium.org>
Reviewed-by: Alex Deymo <deymo@chromium.org>
Commit-Queue: Gilad Arnold <garnold@chromium.org>
diff --git a/policy_manager/random_provider.cc b/policy_manager/random_provider.cc
index f2373b0..70dc31b 100644
--- a/policy_manager/random_provider.cc
+++ b/policy_manager/random_provider.cc
@@ -62,11 +62,14 @@
 
 // RandomProvider implementation.
 
-bool RandomProvider::Init(void) {
-  // Check for double Init()
-  if (var_random_seed != NULL)
-    return false;
+RandomProvider::~RandomProvider(void) {
+  if (var_random_seed) {
+    delete var_random_seed;
+    var_random_seed = NULL;
+  }
+}
 
+bool RandomProvider::DoInit(void) {
   FILE* fp = fopen(kRandomDevice, "r");
   if (!fp)
     return false;
@@ -74,11 +77,4 @@
   return true;
 }
 
-void RandomProvider::Finalize(void) {
-  if (var_random_seed) {
-    delete var_random_seed;
-    var_random_seed = NULL;
-  }
-}
-
 }  // namespace chromeos_policy_manager