Cache $documentNode in surface view

It's used in a load of places and can never change.

Change-Id: I7bb472065d0459071d9246fe607d5d7c165bcddd