Changed LoggingRaw from pull-based to subscriber-based:
- LoggingRaw no longer keeps its own maps internally.
- LoggingRaw now keeps a list of RawEventSubscriber; these subscribers will be notified when there are new raw events.
-- Added functions AddSubscriber() / RemoveSubscriber()
- Added RawEventSubscriber, which is an interface with 3 functions, each handles a type of raw event (Frame, Packet, Generic)
- Added 3 RawEventSubscriber implementations:
-- ReceiverRtcpEventSubscriber, which keeps track of events that we want to send over via RTCP from receiver to sender, sorted by rtp timestamp, using a fixed size buffer. There is some data transformation involved.
--- This is used in VideoReceiver / AudioReceiver
-- SenderRtcpEventSubscriber, which keeps track of events that we want to send over via RTCP from sender to receiver, sorted by rtp timestamp, using a fixed size buffer. There is some data transformation involved and is slightly different from the receiver version.
--- This is used in VideoSender
-- SimpleEventSubscriber, which keeps track of all events as-is and periodically calls the given callback with the data at a fixed interval.
--- I plan to use this in JS app / uploading use case.

Other changes:
- Remove SupportsWeakPtr from LoggingRaw, as it is not needed, as LoggingRaw is used as an object in LoggingImpl only.

Proposal doc:
https://docs.google.com/a/google.com/document/d/1GUIN4ZcScnAz_QuqDhxbvp5F6BOvLBjamdW0edMC5p4/edit?disco=AAAAAHx2Ng0

Note: I talked to Herve about his logging requirements, I can draft up a subscriber implementation for that too, if you would like to see how it roughly looks like.

Review URL: https://codereview.chromium.org/139783013

git-svn-id: svn://svn.chromium.org/chrome/trunk/src@249973 0039d316-1c4b-4281-b951-d872f2087c98
SVN changes up to revision 249973