inject: Cleanup code.
inject: Hook modules only once.

More efficient, and generates less noise on debug output.
inject: Handle Windows API Sets.

This is the proper fix for issue #122 and #172.

Windows 8.x's gdi32.dll was getting LoadLibrary/GetProcAddress from
API-MS-WIN-CORE-LIBRARYLOADER-L1-?-?.DLL instead of kernel32.dll, hence
bypassing our hooks.
inject: Refactor USE_SHARED_MEM pre-processor logic to C logic.

So that we get help from the compiler to ensure both paths keep building.