Introduction of TransactionTracer

TransactionTracer is designed to keep track of request metadata and most important metrics that influenced its performance in the most significant way.

@Wikia/platform-team Please review (I recreated the pull request to make a clean start as I added a bunch of changes)

Coming soon (in separate pull requests):
* log key attributes along with profilers data
* log key attributes along with RUM metrics
> Yeah, I completely agree that this code is not the perfect one, indeed it looks bad. That's why each and every if/switch has an own comment to help understanding the flow.

In the ideal case (and I think this is something that we should strive for) our code needs few if any comments. Wouldn't it be better if our code was so clear and readable that comments were unnecssary :).

> However the current architecture and control flow of this class makes this code execute every time a transaction attribute is set. Today it can execute 5 times per every request on average. I anticipate that number may dynamically grow in the future. Function/method calls are quite expensive in PHP and that's the only reason my first thought for implementation is to sacrifice a bit of code readability for the speed of execution. 

I don't think function calls or object creation is that expensive in the general case. Complexity and memory footprint can certainly affect that but in this case I think it's fine. Consider the following:

```PHP
<?php                                                                                                                                                                                                                                                                                                                                                                                                                                 
                                                                                                                                                                                                                                                                                                                                                                                                                                      
class AnObject {                                                                                                                                                                                                                                                                                                                                                                                                                      
                                                                                                                                                                                                                                                                                                                                                                                                                                      
  private $foo = null;                                                                                                                                                                                                                                                                                                                                                                                                                
                                                                                                                                                                                                                                                                                                                                                                                                                                      
  public function setFoo($bar) {                                                                                                                                                                                                                                                                                                                                                                                                      
    $this->foo = $bar;                                                                                                                                                                                                                                                                                                                                                                                                                
    return $this;                                                                                                                                                                                                                                                                                                                                                                                                                     
  }                                                                                                                                                                                                                                                                                                                                                                                                                                   
                                                                                                                                                                                                                                                                                                                                                                                                                                      
  public function getFoo() {                                                                                                                                                                                                                                                                                                                                                                                                          
    return $this->foo;                                                                                                                                                                                                                                                                                                                                                                                                                
  }                                                                                                                                                                                                                                                                                                                                                                                                                                   
}                                                                                                                                                                                                                                                                                                                                                                                                                                     
                                                                                                                                                                                                                                                                                                                                                                                                                                      
$times = 1e6;                                                                                                                                                                                                                                                                                                                                                                                                                         
$start = microtime(true);                                                                                                                                                                                                                                                                                                                                                                                                             
for ($i = 0; $i < $times; $i++) {                                                                                                                                                                                                                                                                                                                                                                                                     
  $bar = new AnObject();                                                                                                                                                                                                                                                                                                                                                                                                              
  $baz = $bar->setFoo($i)->getFoo();
   assert($baz === $i);                                                                                                                                                                                                                                                                                                                                                                                           
}                                                                                                                                                                                                                                                                                                                                                                                                                                     
$elapsed = microtime(true) - $start;                                                                                                                                                                                                                                                                                                                                                                                                  
printf("%f\n", $elapsed);
```

This simple script runs in less than 600ms on my laptop. That puts each object creation, two method calls, an assertion, and loop overhead at about .0000006s on average. 

In general, I think we should take the approach of writing clean and maintainable code and only when necessary optimize for performance when we know there will be a measurable impact. And then in that case measure and document accordingly.