Introduce "users" promises into CFEngine.

Collaberation with jeffali <hichame.jeffali@cfengine.com>.
Switch to using StringSet instead of BufferList.

It's more appropriate for comparing.
Add more verbose logging to see what's going on in users promises.