Allows for mocking returned user objects and make local info optional

[Allows for mock user objects from PAM.authenticate](https://github.com/kohsuke/libpam4j/issues/1)

Changes UnixUser to be a subclass of the generic AuthenticatedUser.

Non-backwards compatible because of the method signature change on PAM.authenticate.

Also properly checks that user exists locally before trying to use libc to get additional information.