Support loading v2 libraries in libphutil
Summary:
- When loading a v2 library, load all its functions.
- When loading a library, build the classtree at load time instead of when we run a PhutilSymbolLoader query with setAncestorClass. This is slightly less efficient for the common case (zero calls), but simpler.
- Ignore phutil_require_module() calls that load v2 library modules, so a v1 library can continue to reference a v2 library.
- Load symbols in v2 libraries by loading the appropriate files.
Test Plan: Converted libphutil, arcanist and phabricator to v2, one at a time. Loaded stuff in Phabricator.
Reviewers: vrana, nh, btrahan
Reviewed By: vrana
CC: aran
Maniphest Tasks: T1103
Differential Revision: https://secure.phabricator.com/D2587