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)
*: convert to new user/ API

This patch fixes callers of the user/ API within libcontainer to use the
new interfaces.

Signed-off-by: Aleksa Sarai <cyphar@cyphar.com> (github: cyphar)
user: lookup: added os/user-like lookup API

This patch adds an os/user-like user lookup API, implemented in pure Go.
It also has some features not present in the standard library
implementation (such as group lookups).

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)