ManagerAccount: Implement AccountTypes

Seeing "ERROR - AccountTypes: Mandatory prop does not exist" validator
fails. This should not be an error, because bmcweb is using
ManagerAccount.v1_3_0 which doesn't have this property. The workaround
(implement AccountTypes) improves the code, more information and easier
later when moving to a later schema, so bump the ManagerAccount schema
and Implement AccountTypes.

Taking this issue forward with Redfish.
Believe this was introduced in the following Validator commit:
https://github.com/DMTF/Redfish-Service-Validator/commit/de71f0388bf85c920ae48deb6b16aed124f4f23b

From https://redfish.dmtf.org/schemas/ManagerAccount.v1_6_0.json:
                "AccountTypes": {
                    "description": "The account types.",
                    "items": {
                        "anyOf": [
                            {
                                "$ref": "#/definitions/AccountTypes"
                            },

...

                    "versionAdded": "v1_4_0"
                },
...

            "required": [
                "@odata.id",
                "@odata.type",
                "Id",
                "Name",
                "AccountTypes"
            ],

...

        "AccountTypes": {
            "enum": [
                "Redfish",
                "SNMP",
                "OEM"
            ],
            "enumDescriptions": {
                "OEM": "OEM account type.",
                "Redfish": "Allow access to the Redfish Service.",
                "SNMP": "Allow access to SNMP services."
            },
            "type": "string"

Tested: Built and latest validator passes on a Witherspoon.
curl -k https://${bmc}/redfish/v1/AccountService/Accounts/root
{
  "@odata.id": "/redfish/v1/AccountService/Accounts/root",
  "@odata.type": "#ManagerAccount.v1_4_0.ManagerAccount",
  "AccountTypes": [
    "Redfish"
  ],

Change-Id: If48c4b8deb5f199f459858bb2c7469f0ebd44781
Signed-off-by: Gunnar Mills <gmills@us.ibm.com>
diff --git a/redfish-core/lib/account_service.hpp b/redfish-core/lib/account_service.hpp
index 8c67f36..30f34fa 100644
--- a/redfish-core/lib/account_service.hpp
+++ b/redfish-core/lib/account_service.hpp
@@ -133,14 +133,14 @@
                "xyz.openbmc_project.User.Common.Error.UserNameExists") == 0)
     {
         messages::resourceAlreadyExists(asyncResp->res,
-                                        "#ManagerAccount.v1_3_0.ManagerAccount",
+                                        "#ManagerAccount.v1_4_0.ManagerAccount",
                                         "UserName", newUser);
     }
     else if (strcmp(errorMessage, "xyz.openbmc_project.User.Common.Error."
                                   "UserNameDoesNotExist") == 0)
     {
         messages::resourceNotFound(
-            asyncResp->res, "#ManagerAccount.v1_3_0.ManagerAccount", username);
+            asyncResp->res, "#ManagerAccount.v1_4_0.ManagerAccount", username);
     }
     else if (strcmp(errorMessage,
                     "xyz.openbmc_project.Common.Error.InvalidArgument") == 0)
@@ -1576,10 +1576,11 @@
                 }
 
                 asyncResp->res.jsonValue = {
-                    {"@odata.type", "#ManagerAccount.v1_3_0.ManagerAccount"},
+                    {"@odata.type", "#ManagerAccount.v1_4_0.ManagerAccount"},
                     {"Name", "User Account"},
                     {"Description", "User Account"},
-                    {"Password", nullptr}};
+                    {"Password", nullptr},
+                    {"AccountTypes", {"Redfish"}}};
 
                 for (const auto& interface : userIt->second)
                 {
@@ -1773,7 +1774,7 @@
                 if (!rc)
                 {
                     messages::resourceNotFound(
-                        asyncResp->res, "#ManagerAccount.v1_3_0.ManagerAccount",
+                        asyncResp->res, "#ManagerAccount.v1_4_0.ManagerAccount",
                         username);
                     return;
                 }
@@ -1786,7 +1787,7 @@
                     {
                         messages::resourceNotFound(
                             asyncResp->res,
-                            "#ManagerAccount.v1_3_0.ManagerAccount", username);
+                            "#ManagerAccount.v1_4_0.ManagerAccount", username);
                     }
                     else if (retval == PAM_AUTHTOK_ERR)
                     {
@@ -1908,7 +1909,7 @@
                 if (ec)
                 {
                     messages::resourceNotFound(
-                        asyncResp->res, "#ManagerAccount.v1_3_0.ManagerAccount",
+                        asyncResp->res, "#ManagerAccount.v1_4_0.ManagerAccount",
                         username);
                     return;
                 }