Stubify MaxFileData

So, yeah, this blows away MaxSceneViewer. We're never going to get around
to fixing that. In exchange for this massive code explosion, you get a
free MaxFileData stub type thing. It keeps all the data just so we don't
blow up Cyan's plugins. This fixes the "Missing Dll" messages people keep
whining about.
Don't do work in DllMain.

If you don't know why I did this, please Google why you should never do
work in DllMain.
Remove duplicated plPickNode code

This fixes some of the "multiple definition of symbol" warnings we get
from the linker. I checked this against the OU AllDlls solution and
deleted the version not present in it.
The exporter is a single DLL.

So we don't need to __declspec(dllimport) ANYTHING. This stops more linker
warnings.
Toss useless redefinition.
Merge pull request #374 from Hoikas/max-plugin

Moar 3ds Max
Fix #365

plRegistryKeyList::Read assumed that plUoid object IDs are always
sequential. This is not the case since f664e8b resulted in all keys
getting an ID. The problem manifested itself here because there were
temporary materials that were being created and thrown away, causing
object ID gaps.
Merge pull request #378 from Hoikas/invisible-mats

Fix #365
Merge pull request #377 from Hoikas/max-symbols

Fix Max Plugin Linker Warnings
Fix some invalid heap ops found by Dr Memory
Fix some MaxMain compile failures introduced by Hoikas' recent cleanup
Merge pull request #379 from zrax/maxmain_compile

Fix some MaxMain compile failures introduced by Hoikas' recent cleanup
Convert username in pyPlayer and pfKIMsg to a plString
Convert plDXShader's error string to a plString, and do some cleanup
Convert anim name in plAnimStage to a plString
Cleanup: Don't pass a writable scratch buffer off to dozens of virtual
functions -- that's just silly!
Convert plLoadAgeMsg's age filename to a plString
plCloneSpawnModifier template name => plString
Movie filename in plMovieMsg and plBinkPlayer => plString
pfGameGUIMsg => plString