Change ErrorCode into an enum class.

This change is needed in order for us to be able to import ErrorCode
symbols from chromeos_update_engine into chromeos_update_manager.
Unfortunately, shifting from plain 'enum' into an 'enum class' means
that the compiler treats the new class as a distinct type from int,
which in turn means that plenty of seamless arithmetic/bitwise
operations we used for manipulating error code values throughout the
code needed to be retrofitted with static_cast operators.

In the future, we should consider imposing a proper abstraction on
update engine error codes that'll prevent mingling with value encoding
directly and prevent such nastiness. It'll also make things more
coherent (types, semantics) and safer.

BUG=chromium:358329
TEST=Unit tests.

Change-Id: Ie55fa566b764cdab6c4785d995fb6daee4cb32d3
Reviewed-on: https://chromium-review.googlesource.com/203209
Tested-by: Gilad Arnold <garnold@chromium.org>
Reviewed-by: Alex Deymo <deymo@chromium.org>
Commit-Queue: Gilad Arnold <garnold@chromium.org>
diff --git a/action_processor_unittest.cc b/action_processor_unittest.cc
index 20bded6..a55f0d3 100644
--- a/action_processor_unittest.cc
+++ b/action_processor_unittest.cc
@@ -33,7 +33,7 @@
   void PerformAction() {}
   void CompleteAction() {
     ASSERT_TRUE(processor());
-    processor()->ActionComplete(this, kErrorCodeSuccess);
+    processor()->ActionComplete(this, ErrorCode::kSuccess);
   }
   string Type() const { return "ActionProcessorTestAction"; }
 };
@@ -66,7 +66,7 @@
         processing_done_called_(false),
         processing_stopped_called_(false),
         action_completed_called_(false),
-        action_exit_code_(kErrorCodeError) {}
+        action_exit_code_(ErrorCode::kError) {}
 
   virtual void ProcessingDone(const ActionProcessor* processor,
                               ErrorCode code) {