dbr quant: insert activation obs explicitly, instead of relying on hooks (#73492)
Summary:
Pull Request resolved: https://github.com/pytorch/pytorch/pull/73492
Before this PR, DBR quant reused the Eager mode quantization machinery
to insert activation observers. This was done for speed of developing the
prototype. A drawback of this is that the activation observers are not
present in DBR's data structures and live on the modules instead.
This PR refactors DBR quant to stop using Eager mode quantization
observer insertion for activations, and instead create and track the
activation observers in DBR's data structures. This has a couple of benefits:
1. activation observers are now created the same way in DBR for modules and functions
2. we can remove some technical debt due to fixing (1)
3. this will make it easier to support reference modules in a future PR
The reason (3) is true is because the current design of reference modules
assumes that the activation observer lives on the framework (like in FX
graph mode quantization). This PR starts to adhere to that assumption.
Test Plan:
```
python test/test_quantization.py -k DBR
```
Reviewed By: jerryzh168
Differential Revision: D34520758
Pulled By: vkuzo
fbshipit-source-id: 2f6448dce021024cb2fa112d8691c94128c43123
(cherry picked from commit cfc1a0eaf6579cea2c710c1c2b4c86d28ee799eb)