user: *: refactor and expand libcontainer/user API

This patch refactors most of GetUserGroupSupplementaryHome and its
signature, to make using it much simpler. The private parsing functions
have also been exposed (parsePasswdFile, parseGroupFile) to allow custom
data source to be used (increasing the versatility of the user/ tools).

In addition, several APIs have been added (most notably a pure-Go
implementation of the os/user API, adding features from the
libcontainer/user API).

Signed-off-by: Aleksa Sarai <cyphar@cyphar.com> (github: cyphar)
user: add unit tests for GetRunUser

Signed-off-by: Aleksa Sarai <cyphar@cyphar.com> (github: cyphar)