Optimize: hoist the set() function out into its own closure

The intention here is to make the `Symbol` instance elidgible for garbage collection, and the `setter` closure be the only thing that gets retained in memory on the `Object.prototype`.