Update error_messages to Base 1.8.1

The Base message registry has updated to 1.8.1.  This updates our
error_messages files to match.

This changes from the deprecated 'Severity' to the new
'MessageSeverity' property.

It also adds a script to compare our error_messages.cpp messages
against the Base message registry and flag any differences.

Tested:
Ran the Redfish Validator and confirmed that this change does
not introduce any new failures.

Change-Id: I2e5101a5b4d0c0963569493451f99521e42b0f4d
Signed-off-by: Jason M. Bills <jason.m.bills@linux.intel.com>
diff --git a/scripts/check_base_registry.py b/scripts/check_base_registry.py
new file mode 100644
index 0000000..667f167
--- /dev/null
+++ b/scripts/check_base_registry.py
@@ -0,0 +1,61 @@
+#!/usr/bin/python3
+
+import argparse
+import json
+import re
+
+
+parser = argparse.ArgumentParser()
+parser.add_argument('-b', '--base', default=None, required=True)
+parser.add_argument('-f', '--file', default=None, required=True)
+args = parser.parse_args()
+
+with open(args.file) as error_file:
+    error_data = error_file.readlines()
+
+    with open(args.base) as base_file:
+        base_json = json.load(base_file)
+        for message_name, message_data in base_json['Messages'].items():
+            message_id = base_json['RegistryPrefix'] + '.' + \
+                base_json['RegistryVersion'] + '.' + message_name
+            message_found = False
+            index = 0
+            for i, error in enumerate(error_data):
+                if message_id in error:
+                    message_found = True
+                    index = i
+                    break
+            if not message_found:
+                print("{} not found".format(message_id))
+                continue
+
+            error_info = error_data[index:index + 15]
+            error_str = " ".join(error_info)
+            error_str = re.sub(
+                'std::to_string\(arg(\d+)\)',
+                'arg\\1',
+                error_str)
+            error_str = re.sub('"\n\s*"', '', error_str, re.MULTILINE)
+            error_str = re.sub(
+                '"\s*\+\s*arg(\d+)\s*\+\n?\s*"',
+                '%\\1',
+                error_str,
+                re.MULTILINE)
+            if message_data['Message'] not in error_str:
+                print(
+                    "{}: error in Message: {}".format(
+                        message_id,
+                        message_data['Message']))
+                print(error_str)
+
+            if message_data['MessageSeverity'] not in error_str:
+                print("{}: error in MessageSeverity: {}".format(
+                    message_id, message_data['MessageSeverity']))
+                print(error_str)
+
+            if message_data['Resolution'] not in error_str:
+                print(
+                    "{}: error in Resolution: {}".format(
+                        message_id,
+                        message_data['Resolution']))
+                print(error_str)