Add support for visibility depth
Add support for visibility depth

Summary:
This adds support for the concept of visibility depth.

Visibility essentially defines the number of user actions it would
take a user to have a view controller visible. Knowing a view controllers
visibility depth allows view controllers to take action such as clearing
out memory that can be restored at a later date.

This patch also add two new view controller subclasses which adopt
the ASManagesChildVisibilityDepth protocol. Any view controller
that has child view controllers can adopt this protocol to indicate
to the child what they're visibility is. For example, ASNavigationController
will return a visibility depth of it's own visibilityDepth + 1 for
a view controller that would be revealed by tapping the back button.

Move common implementations to macros

Turn off visibility logging

Differential Revision: https://phabricator.pinadmin.com/D90395

tomizimobile/AsyncDisplayKit,JetZou/AsyncDisplayKit,samhsiung/AsyncDisplayKit,harryworld/AsyncDisplayKit,harryworld/AsyncDisplayKit,aaronschubert0/AsyncDisplayKit,harryworld/AsyncDisplayKit,gazreese/AsyncDisplayKit,Xinchi/AsyncDisplayKit,gazreese/AsyncDisplayKit,nrcmedia/AsyncDisplayKit,lappp9/AsyncDisplayKit,samhsiung/AsyncDisplayKit,smyrgl/AsyncDisplayKit,rahul-malik/AsyncDisplayKit,garrettmoon/AsyncDisplayKit,garrettmoon/AsyncDisplayKit,Adlai-Holler/AsyncDisplayKit,maicki/AsyncDisplayKit,aaronschubert0/AsyncDisplayKit,Xinchi/AsyncDisplayKit,facebook/AsyncDisplayKit,smyrgl/AsyncDisplayKit,hannahmbanana/AsyncDisplayKit,jellenbogen/AsyncDisplayKit,gazreese/AsyncDisplayKit,rmls/AsyncDisplayKit,samhsiung/AsyncDisplayKit,levi/AsyncDisplayKit,tomizimobile/AsyncDisplayKit,garrettmoon/AsyncDisplayKit,bimawa/AsyncDisplayKit,maicki/AsyncDisplayKit,hannahmbanana/AsyncDisplayKit,lappp9/AsyncDisplayKit,Adlai-Holler/AsyncDisplayKit,lappp9/AsyncDisplayKit,romyilano/AsyncDisplayKit,george-gw/AsyncDisplayKit,nrcmedia/AsyncDisplayKit,Adlai-Holler/AsyncDisplayKit,levi/AsyncDisplayKit,hannahmbanana/AsyncDisplayKit,aaronschubert0/AsyncDisplayKit,aaronschubert0/AsyncDisplayKit,samhsiung/AsyncDisplayKit,levi/AsyncDisplayKit,nrcmedia/AsyncDisplayKit,chrisdanford/AsyncDisplayKit,yufenglv/AsyncDisplayKit,facebook/AsyncDisplayKit,Xinchi/AsyncDisplayKit,george-gw/AsyncDisplayKit,nrcmedia/AsyncDisplayKit,yufenglv/AsyncDisplayKit,levi/AsyncDisplayKit,george-gw/AsyncDisplayKit,maicki/AsyncDisplayKit,jellenbogen/AsyncDisplayKit,facebook/AsyncDisplayKit,rmls/AsyncDisplayKit,lappp9/AsyncDisplayKit,romyilano/AsyncDisplayKit,flovouin/AsyncDisplayKit,garrettmoon/AsyncDisplayKit,smyrgl/AsyncDisplayKit,maicki/AsyncDisplayKit,hannahmbanana/AsyncDisplayKit,tomizimobile/AsyncDisplayKit,aaronschubert0/AsyncDisplayKit,Adlai-Holler/AsyncDisplayKit,jellenbogen/AsyncDisplayKit,levi/AsyncDisplayKit,harryworld/AsyncDisplayKit,tomizimobile/AsyncDisplayKit,gazreese/AsyncDisplayKit,rmls/AsyncDisplayKit,JetZou/AsyncDisplayKit,chrisdanford/AsyncDisplayKit,harryworld/AsyncDisplayKit,hannahmbanana/AsyncDisplayKit,Xinchi/AsyncDisplayKit,yufenglv/AsyncDisplayKit,jellenbogen/AsyncDisplayKit,maicki/AsyncDisplayKit,chrisdanford/AsyncDisplayKit,bimawa/AsyncDisplayKit,rmls/AsyncDisplayKit,JetZou/AsyncDisplayKit,flovouin/AsyncDisplayKit,smyrgl/AsyncDisplayKit,rmls/AsyncDisplayKit,rahul-malik/AsyncDisplayKit,Xinchi/AsyncDisplayKit,flovouin/AsyncDisplayKit,rahul-malik/AsyncDisplayKit,tomizimobile/AsyncDisplayKit,garrettmoon/AsyncDisplayKit,chrisdanford/AsyncDisplayKit,jellenbogen/AsyncDisplayKit,romyilano/AsyncDisplayKit,rahul-malik/AsyncDisplayKit,Adlai-Holler/AsyncDisplayKit,yufenglv/AsyncDisplayKit,romyilano/AsyncDisplayKit,flovouin/AsyncDisplayKit,JetZou/AsyncDisplayKit,george-gw/AsyncDisplayKit,flovouin/AsyncDisplayKit,facebook/AsyncDisplayKit,yufenglv/AsyncDisplayKit,nrcmedia/AsyncDisplayKit,JetZou/AsyncDisplayKit,bimawa/AsyncDisplayKit,bimawa/AsyncDisplayKit