snapuserd: Split the server into two classes.

This splits server into two classes: one that handles the IPC requests,
and one that managers snapshot handlers. This will allow embedding of
the snapshot handling code, without booting up a server. It'll also make
testing much easier.

The handler code has been further placed behind a virtual interface,
though this is likely unnecessary unless we start testing the server
logic itself (or attempt to unify the S and T+ versions of snapuserd).

Bug: 269361087
Test: ota
Ignore-AOSP-First: cherry-pick from aosp
(cherry picked from https://googleplex-android-review.googlesource.com/q/commit:8bb751dc8a1499f24add9e0831ab347feb2c3878)
Merged-In: I3ca3ad9c8c1fb910a1c7bf9f44165e2f44c930c9
Change-Id: I3ca3ad9c8c1fb910a1c7bf9f44165e2f44c930c9
6 files changed