feat(WatchGroup): Allow measuring cost of running reaction functions and

reporting it.

To be able to measure cost of reaction fn one needs to define
ReactionFnStats and ReactionFnStatsEmitter. ReactionFnStats takes one
parameter and that is the number of most expensive functions to record.

One can define ReactionFnStats and ReactionFnStatsEmitter like:
m..bind(ReactionFnStats, toFactory: (i) =>
    new ReactionFnStats(15,i.get(ReactionFnStatsEmitter)))
  ..bind(ReactionFnStatsEmitter);

To report the most expensive functions, open the console and type
ngReactionFunctionStats().emit(). This will output n most expensive
functions with their corresponding expressions in a table like format.
yes, exceptions are very expensive. Change to range check.