API interface via context object instead of global snorkel object; rework options (canEmitLocally, canEmitRemotely); add scope and alwaysFireOnUpdate options to .on(); add default parm to .get() and .remove()