Run plugins in their own little environments

As a convenient bonus for plugins, this means they have their own little persistent object to play with, and they get nice variable names for the information passed in, instead of (argument0). Oh, and there's a better way to detect whether it's a server-sent plugin now.