Make sure all arguments pub() passes to postMessage are structured-cloneable.

This avoids throwing an exception for code like 'catch(e) { pub("error", e); }'.
fix handling of empty string enums
Merge pull request #376 from darobin/develop

fix handling of empty string enums
Merge branch 'develop', remote branch 'origin' into develop
v3.2.31
Merge pull request #368 from jyasskin/feature/pub-non-cloneable

Make sure all arguments pub() passes to postMessage are structured-cloneable.