Add 'deep' and 'deepOf' functions for traversal

I had to implement them in different modules to avoid a circular dependency. Also, I'm not sure if `deep` or `deepOf` breaks any laws?