Added Rewire/Unwire Capabilities

- Added a GUID to pass return values from create to destroy plugin
  functions
- Added create/destroy concept for plugins that need destroy
- Added unwire for specific and all plugins
- Added wire for specific plugins
- Prevented plugins from being wired if they have already been wired
- Added rewire, which first unwires then rewires either specific or
  all plugins

Testing
----
- Mostly TDD
should be aligned like this? 
``` javascript
  return Math.floor((1 + Math.random()) * 0x10000)
                    .toString(16)
                    .substring(1);