authpolicy: Add unit test for preg_policy_encoder

Checks basic policy encoding from preg files and whether multiple
files properly override each other.

Fixes two bugs found during testing regarding the way string lists
override each other. Due to a bug in preg_policy_encoder.cc, a string
list policy with value ["1", "2", "3"] would not be overridden by
["4", "5"], but yield ["4", "5", "3"] because of using
RegistryDict::Merge instead of having preg_parser merge in values
(essentially, **delvals was being ignored). A second bug in
user_policy_encoder.cc and device_policy.encoder.cc caused string
lists to be concatenated, yielding ["1", "2", "3", "4", "5"] instead
of ["4", "5"].

BUG=chromium:664440
TEST=Compiled and ran tests.

Change-Id: I37f2d395b9948b7b690ade742ee31f63fb88a7e4
Reviewed-on: https://chromium-review.googlesource.com/469612
Commit-Ready: Lutz Justen <ljusten@chromium.org>
Tested-by: Lutz Justen <ljusten@chromium.org>
Reviewed-by: Zentaro Kavanagh <zentaro@google.com>
6 files changed