add support for "fake" root and for alternate shell

when user shell is NULL and default shell is returned, if ALT_SHELL is defined that is returned instead.
If ALT_SHELL is defined, include it in the list of "okshells" in compat.c
Added get_fake_pwnam function to return a fake passwd struct for root
Wherever getpwnam returns NULL, get_fake_pwnam() is called if FAKE_ROOT is defined.