pu.utils: Add find_modules().
pu.scons.utils: Add zip_from_config().

The new function does the same thing as tar_gz_from_config() using a ZIP
file as archive format since this format is handier when deploying things
to Windows users.  Some of their shared code was generalized and tar_*()
was refactored a bit as a result.
pu.terminal: Tighten up error checking.

This change adds error checking to the code that uses Windows DLLs via the
ctypes module.  The error checking was lazily omitted previously.
pu.terminal: Cache self.__seq where beneficial.
pu.terminal: Isolate DLL handle and shore up code.

In order to avoid being affected by the problems caused by other projects
clobbering the function attributes from ctypes.windll.kernel32 and to avoid
causing problems for other projects, start using a local handle to the DLL
via ctypes.WinDLL('kernel32').  Also, make the code more likely to work on
64-bit versions of Windows by making use of the .restype and .argtypes
attributes of the function pointers.