Make MessageQueue to emit "SPY" events in a way that can be extensible
Make MessageQueue to emit "SPY" events in a way that can be extensible

Summary:
This PR adds a capability for MessageQueue to emit "SPY" events in a way that can be extensible, to later allow for a tooling ecosystem to grow, one example is the existing [Snoopy](https://github.com/jondot/rn-snoopy) tool that is, for now, forced to work with monkeypatches, and after this PR will be able to use a "formal" way to trace queue events.

After this change, we can wire a "spy" into a queue that will expose the events in different and interesting ways, see below (done with Snoopy):
  <img src="https://github.com/jondot/rn-snoopy/blob/master/media/snoopy.gif?raw=true" alt="Aggregating and Charting Events with Bar" width="400px"/>
  <img src="https://github.com/jondot/rn-snoopy/blob/master/media/snoopy-filter.gif?raw=true" alt="Aggregating and Charting Events with Bar" width="400px"/>

This removes the hardcoded `SPY_MODE` flag and instead uses a function that can be injected from outside world.

```javascript
MessageQueue.spy((info)=>console.log("event!", info)
```

It also creates
Closes https://github.com/facebook/react-native/pull/9160

Differential Revision: D3669053

Pulled By: javache

fbshipit-source-id: 3e4462aa77fc8514d2ea4f15430f7bec57b583a4

Ehesp/react-native,arthuralee/react-native,formatlos/react-native,hammerandchisel/react-native,imDangerous/react-native,makadaw/react-native,facebook/react-native,thotegowda/react-native,forcedotcom/react-native,hammerandchisel/react-native,negativetwelve/react-native,skevy/react-native,shrutic/react-native,hoangpham95/react-native,gre/react-native,kesha-antonov/react-native,pandiaraj44/react-native,Guardiannw/react-native,thotegowda/react-native,Maxwell2022/react-native,Swaagie/react-native,cosmith/react-native,tarkus/react-native-appletv,catalinmiron/react-native,tadeuzagallo/react-native,tszajna0/react-native,lprhodes/react-native,jaggs6/react-native,mironiasty/react-native,callstack-io/react-native,naoufal/react-native,adamjmcgrath/react-native,DanielMSchmidt/react-native,PlexChat/react-native,jaggs6/react-native,PlexChat/react-native,csatf/react-native,forcedotcom/react-native,happypancake/react-native,gilesvangruisen/react-native,javache/react-native,esauter5/react-native,pandiaraj44/react-native,jasonnoahchoi/react-native,naoufal/react-native,eduardinni/react-native,tarkus/react-native-appletv,jaggs6/react-native,salanki/react-native,exponentjs/react-native,tadeuzagallo/react-native,ankitsinghania94/react-native,happypancake/react-native,CodeLinkIO/react-native,javache/react-native,DannyvanderJagt/react-native,arthuralee/react-native,aaron-goshine/react-native,foghina/react-native,Maxwell2022/react-native,Purii/react-native,hoangpham95/react-native,frantic/react-native,gitim/react-native,naoufal/react-native,chnfeeeeeef/react-native,brentvatne/react-native,kesha-antonov/react-native,alin23/react-native,foghina/react-native,thotegowda/react-native,salanki/react-native,salanki/react-native,hammerandchisel/react-native,gilesvangruisen/react-native,forcedotcom/react-native,jasonnoahchoi/react-native,tgoldenberg/react-native,clozr/react-native,janicduplessis/react-native,shrutic123/react-native,thotegowda/react-native,satya164/react-native,Livyli/react-native,tgoldenberg/react-native,facebook/react-native,DanielMSchmidt/react-native,shrutic/react-native,charlesvinette/react-native,nickhudkins/react-native,clozr/react-native,tgoldenberg/react-native,salanki/react-native,Swaagie/react-native,dikaiosune/react-native,mironiasty/react-native,farazs/react-native,Swaagie/react-native,ankitsinghania94/react-native,jaggs6/react-native,Ehesp/react-native,exponent/react-native,charlesvinette/react-native,jaggs6/react-native,Ehesp/react-native,imDangerous/react-native,gitim/react-native,rickbeerendonk/react-native,chnfeeeeeef/react-native,cdlewis/react-native,rickbeerendonk/react-native,pandiaraj44/react-native,Purii/react-native,jasonnoahchoi/react-native,satya164/react-native,clozr/react-native,salanki/react-native,tgoldenberg/react-native,forcedotcom/react-native,lprhodes/react-native,kesha-antonov/react-native,tgoldenberg/react-native,satya164/react-native,callstack-io/react-native,shrutic/react-native,exponentjs/react-native,jasonnoahchoi/react-native,DanielMSchmidt/react-native,christopherdro/react-native,tszajna0/react-native,exponentjs/react-native,dikaiosune/react-native,tarkus/react-native-appletv,imDangerous/react-native,Purii/react-native,exponentjs/react-native,happypancake/react-native,makadaw/react-native,skevy/react-native,Bhullnatik/react-native,alin23/react-native,gitim/react-native,csatf/react-native,aaron-goshine/react-native,tgoldenberg/react-native,catalinmiron/react-native,Livyli/react-native,ptomasroos/react-native,cosmith/react-native,cpunion/react-native,makadaw/react-native,frantic/react-native,chnfeeeeeef/react-native,catalinmiron/react-native,Purii/react-native,Guardiannw/react-native,shrutic/react-native,lprhodes/react-native,myntra/react-native,callstack-io/react-native,browniefed/react-native,peterp/react-native,esauter5/react-native,negativetwelve/react-native,exponent/react-native,nickhudkins/react-native,shrutic/react-native,Livyli/react-native,mironiasty/react-native,xiayz/react-native,esauter5/react-native,Maxwell2022/react-native,eduardinni/react-native,jadbox/react-native,csatf/react-native,orenklein/react-native,satya164/react-native,Guardiannw/react-native,janicduplessis/react-native,facebook/react-native,mironiasty/react-native,hoangpham95/react-native,kesha-antonov/react-native,orenklein/react-native,negativetwelve/react-native,jevakallio/react-native,hoangpham95/react-native,nickhudkins/react-native,imDangerous/react-native,brentvatne/react-native,christopherdro/react-native,rickbeerendonk/react-native,nickhudkins/react-native,formatlos/react-native,ptomasroos/react-native,ptmt/react-native-macos,adamjmcgrath/react-native,facebook/react-native,myntra/react-native,Ehesp/react-native,Ehesp/react-native,formatlos/react-native,kesha-antonov/react-native,browniefed/react-native,Guardiannw/react-native,ptmt/react-native-macos,doochik/react-native,htc2u/react-native,janicduplessis/react-native,gitim/react-native,javache/react-native,gre/react-native,negativetwelve/react-native,CodeLinkIO/react-native,callstack-io/react-native,gilesvangruisen/react-native,doochik/react-native,Swaagie/react-native,adamjmcgrath/react-native,doochik/react-native,formatlos/react-native,imDangerous/react-native,farazs/react-native,janicduplessis/react-native,jaggs6/react-native,csatf/react-native,skevy/react-native,ankitsinghania94/react-native,hoangpham95/react-native,salanki/react-native,eduardinni/react-native,DannyvanderJagt/react-native,aljs/react-native,charlesvinette/react-native,Purii/react-native,tadeuzagallo/react-native,facebook/react-native,jadbox/react-native,tarkus/react-native-appletv,doochik/react-native,ankitsinghania94/react-native,jadbox/react-native,tsjing/react-native,exponent/react-native,alin23/react-native,clozr/react-native,tszajna0/react-native,Livyli/react-native,Maxwell2022/react-native,brentvatne/react-native,xiayz/react-native,peterp/react-native,DanielMSchmidt/react-native,browniefed/react-native,PlexChat/react-native,makadaw/react-native,mironiasty/react-native,farazs/react-native,chnfeeeeeef/react-native,shrutic123/react-native,happypancake/react-native,Livyli/react-native,kesha-antonov/react-native,negativetwelve/react-native,facebook/react-native,myntra/react-native,ptmt/react-native-macos,alin23/react-native,aaron-goshine/react-native,lprhodes/react-native,imjerrybao/react-native,jasonnoahchoi/react-native,Livyli/react-native,Guardiannw/react-native,cpunion/react-native,aljs/react-native,Andreyco/react-native,forcedotcom/react-native,tadeuzagallo/react-native,ndejesus1227/react-native,mironiasty/react-native,tadeuzagallo/react-native,cpunion/react-native,janicduplessis/react-native,callstack-io/react-native,makadaw/react-native,nickhudkins/react-native,thotegowda/react-native,doochik/react-native,formatlos/react-native,charlesvinette/react-native,rickbeerendonk/react-native,PlexChat/react-native,adamjmcgrath/react-native,Bhullnatik/react-native,jadbox/react-native,brentvatne/react-native,csatf/react-native,satya164/react-native,javache/react-native,cosmith/react-native,gilesvangruisen/react-native,CodeLinkIO/react-native,tsjing/react-native,frantic/react-native,ptmt/react-native-macos,ankitsinghania94/react-native,charlesvinette/react-native,facebook/react-native,alin23/react-native,aljs/react-native,DanielMSchmidt/react-native,shrutic123/react-native,forcedotcom/react-native,arthuralee/react-native,catalinmiron/react-native,imDangerous/react-native,Swaagie/react-native,gilesvangruisen/react-native,orenklein/react-native,jevakallio/react-native,javache/react-native,chnfeeeeeef/react-native,Ehesp/react-native,brentvatne/react-native,Andreyco/react-native,tadeuzagallo/react-native,CodeLinkIO/react-native,skevy/react-native,javache/react-native,gre/react-native,exponent/react-native,jadbox/react-native,PlexChat/react-native,myntra/react-native,DannyvanderJagt/react-native,tszajna0/react-native,brentvatne/react-native,happypancake/react-native,charlesvinette/react-native,Andreyco/react-native,ankitsinghania94/react-native,cpunion/react-native,htc2u/react-native,charlesvinette/react-native,ankitsinghania94/react-native,frantic/react-native,brentvatne/react-native,hammerandchisel/react-native,ptomasroos/react-native,mironiasty/react-native,jevakallio/react-native,hoastoolshop/react-native,tsjing/react-native,lprhodes/react-native,cdlewis/react-native,xiayz/react-native,alin23/react-native,foghina/react-native,foghina/react-native,satya164/react-native,clozr/react-native,csatf/react-native,kesha-antonov/react-native,farazs/react-native,arthuralee/react-native,exponentjs/react-native,hoangpham95/react-native,htc2u/react-native,nickhudkins/react-native,cosmith/react-native,Livyli/react-native,foghina/react-native,Purii/react-native,pandiaraj44/react-native,PlexChat/react-native,myntra/react-native,Guardiannw/react-native,cpunion/react-native,jasonnoahchoi/react-native,shrutic123/react-native,facebook/react-native,hoastoolshop/react-native,imjerrybao/react-native,doochik/react-native,thotegowda/react-native,Guardiannw/react-native,farazs/react-native,salanki/react-native,CodeLinkIO/react-native,skevy/react-native,exponentjs/react-native,eduardinni/react-native,orenklein/react-native,gilesvangruisen/react-native,eduardinni/react-native,christopherdro/react-native,forcedotcom/react-native,shrutic123/react-native,peterp/react-native,happypancake/react-native,naoufal/react-native,cdlewis/react-native,esauter5/react-native,aljs/react-native,cdlewis/react-native,gre/react-native,ankitsinghania94/react-native,peterp/react-native,CodeLinkIO/react-native,hoastoolshop/react-native,rickbeerendonk/react-native,negativetwelve/react-native,gitim/react-native,hammerandchisel/react-native,xiayz/react-native,DannyvanderJagt/react-native,facebook/react-native,hoangpham95/react-native,salanki/react-native,jaggs6/react-native,DanielMSchmidt/react-native,htc2u/react-native,hoangpham95/react-native,tszajna0/react-native,tsjing/react-native,imjerrybao/react-native,arthuralee/react-native,Purii/react-native,jasonnoahchoi/react-native,imjerrybao/react-native,aaron-goshine/react-native,gre/react-native,myntra/react-native,aaron-goshine/react-native,farazs/react-native,brentvatne/react-native,clozr/react-native,cosmith/react-native,myntra/react-native,cdlewis/react-native,forcedotcom/react-native,cosmith/react-native,gre/react-native,Bhullnatik/react-native,clozr/react-native,Maxwell2022/react-native,makadaw/react-native,aljs/react-native,gilesvangruisen/react-native,jadbox/react-native,DanielMSchmidt/react-native,tszajna0/react-native,pandiaraj44/react-native,Maxwell2022/react-native,Bhullnatik/react-native,tadeuzagallo/react-native,ptmt/react-native-macos,esauter5/react-native,Swaagie/react-native,shrutic123/react-native,gitim/react-native,shrutic/react-native,rickbeerendonk/react-native,tsjing/react-native,happypancake/react-native,makadaw/react-native,esauter5/react-native,negativetwelve/react-native,ptomasroos/react-native,exponent/react-native,ptomasroos/react-native,shrutic123/react-native,tgoldenberg/react-native,dikaiosune/react-native,eduardinni/react-native,lprhodes/react-native,gilesvangruisen/react-native,christopherdro/react-native,jevakallio/react-native,DanielMSchmidt/react-native,Andreyco/react-native,skevy/react-native,cdlewis/react-native,jaggs6/react-native,browniefed/react-native,hoastoolshop/react-native,Bhullnatik/react-native,doochik/react-native,exponent/react-native,cpunion/react-native,peterp/react-native,csatf/react-native,gre/react-native,lprhodes/react-native,janicduplessis/react-native,tszajna0/react-native,DannyvanderJagt/react-native,christopherdro/react-native,jevakallio/react-native,lprhodes/react-native,xiayz/react-native,makadaw/react-native,ptmt/react-native-macos,pandiaraj44/react-native,gre/react-native,ndejesus1227/react-native,cpunion/react-native,htc2u/react-native,gitim/react-native,dikaiosune/react-native,hammerandchisel/react-native,peterp/react-native,peterp/react-native,Livyli/react-native,chnfeeeeeef/react-native,DannyvanderJagt/react-native,javache/react-native,foghina/react-native,foghina/react-native,ndejesus1227/react-native,dikaiosune/react-native,htc2u/react-native,rickbeerendonk/react-native,jadbox/react-native,negativetwelve/react-native,dikaiosune/react-native,tadeuzagallo/react-native,tarkus/react-native-appletv,ndejesus1227/react-native,Bhullnatik/react-native,hoastoolshop/react-native,Ehesp/react-native,hoastoolshop/react-native,janicduplessis/react-native,adamjmcgrath/react-native,Swaagie/react-native,formatlos/react-native,ptomasroos/react-native,ptmt/react-native-macos,satya164/react-native,imDangerous/react-native,ptomasroos/react-native,tarkus/react-native-appletv,Andreyco/react-native,xiayz/react-native,tarkus/react-native-appletv,doochik/react-native,adamjmcgrath/react-native,rickbeerendonk/react-native,formatlos/react-native,formatlos/react-native,alin23/react-native,esauter5/react-native,tarkus/react-native-appletv,jevakallio/react-native,DannyvanderJagt/react-native,jadbox/react-native,doochik/react-native,aljs/react-native,javache/react-native,tsjing/react-native,Purii/react-native,browniefed/react-native,ndejesus1227/react-native,janicduplessis/react-native,Andreyco/react-native,makadaw/react-native,PlexChat/react-native,peterp/react-native,tgoldenberg/react-native,aljs/react-native,imjerrybao/react-native,rickbeerendonk/react-native,foghina/react-native,dikaiosune/react-native,brentvatne/react-native,myntra/react-native,happypancake/react-native,callstack-io/react-native,satya164/react-native,cdlewis/react-native,exponentjs/react-native,aaron-goshine/react-native,gitim/react-native,xiayz/react-native,christopherdro/react-native,pandiaraj44/react-native,shrutic/react-native,browniefed/react-native,naoufal/react-native,javache/react-native,mironiasty/react-native,esauter5/react-native,nickhudkins/react-native,kesha-antonov/react-native,ptomasroos/react-native,tsjing/react-native,Swaagie/react-native,hammerandchisel/react-native,Bhullnatik/react-native,adamjmcgrath/react-native,shrutic123/react-native,alin23/react-native,cdlewis/react-native,catalinmiron/react-native,kesha-antonov/react-native,ptmt/react-native-macos,pandiaraj44/react-native,jevakallio/react-native,farazs/react-native,frantic/react-native,jevakallio/react-native,catalinmiron/react-native,skevy/react-native,thotegowda/react-native,clozr/react-native,browniefed/react-native,aaron-goshine/react-native,cpunion/react-native,charlesvinette/react-native,htc2u/react-native,imDangerous/react-native,CodeLinkIO/react-native,catalinmiron/react-native,imjerrybao/react-native,CodeLinkIO/react-native,csatf/react-native,farazs/react-native,browniefed/react-native,hoastoolshop/react-native,Maxwell2022/react-native,christopherdro/react-native,orenklein/react-native,ndejesus1227/react-native,cosmith/react-native,aljs/react-native,orenklein/react-native,chnfeeeeeef/react-native,Guardiannw/react-native,hammerandchisel/react-native,cosmith/react-native,chnfeeeeeef/react-native,catalinmiron/react-native,shrutic/react-native,mironiasty/react-native,christopherdro/react-native,hoastoolshop/react-native,skevy/react-native,Andreyco/react-native,imjerrybao/react-native,exponentjs/react-native,orenklein/react-native,eduardinni/react-native,farazs/react-native,thotegowda/react-native,tszajna0/react-native,adamjmcgrath/react-native,exponent/react-native,ndejesus1227/react-native,callstack-io/react-native,htc2u/react-native,eduardinni/react-native,naoufal/react-native,imjerrybao/react-native,cdlewis/react-native,PlexChat/react-native,formatlos/react-native,dikaiosune/react-native,exponent/react-native,negativetwelve/react-native,Maxwell2022/react-native,orenklein/react-native,xiayz/react-native,Ehesp/react-native,myntra/react-native,naoufal/react-native,DannyvanderJagt/react-native,ndejesus1227/react-native,jasonnoahchoi/react-native,jevakallio/react-native,Bhullnatik/react-native,Andreyco/react-native,nickhudkins/react-native,callstack-io/react-native,naoufal/react-native,tsjing/react-native,aaron-goshine/react-native