[tpwd] Remove support for <path> argument

Instead of using <path> argument, one can set the PWD environment
variable prior to calling tpwd so no functionality is lost.  For
example, instead of invoking “tpwd 30 ... 3 /foo/bar” one can do
“PWD=/foo/bar “tpwd 30”.
[tpwd] Do not do home-substitution if $HOME not set

One line of code less w/o support for HOME being unset, so it is
worth it. ;)  bash builtin “cd” does not handle situations where
$HOME is not set so I do not believe tpwd has to.
[tpwd] Add test suite
[tpwd] Get rid of specialised code and prefer sourcing to evaluation

Instead of having three separate versions of the function – one executed
when the script is run, one for bash and zsh and another for POSIX
shells – use a single code that works in all shells.  This simplifies
the code – since now there's only one version to maintain – and allows
the file to be sourced rather than having to eval its output when called
with --function or so.  The --function, --bash and --zsh options are now
deprecated.
[tpwd] Add test case for when the file is sourced