Cache & reuse direct observers when O.o is present

R=arv
BUG=

Review URL: https://codereview.appspot.com/47270043