Optimizations: Split and unroll scopes (x1.6 faster)

1. ``benchmark`` branch: Added a benchmark with meta_schemas cheking & extensive sample-schema with references.
2. Implemented two optimizations:
2.a. ``split_scopes`` branch: Keep URIs in 2 parts (url, fragment) to avoid fragging/defragging since fragments do not join, they always override (~1.1 faster)
2.b. ``unroll_scopes`` branch:  Replace resolver.in_scope() context-manager with a push/pop stack of scopes, that does nothing it when no ``id`` property exists (~1.5 faster).
3. ``split_unroll_scopes`` branch: Combined both optimizations (~1.6 faster).
3. For future reference, the timed-results are engraved on the respective methods of ``wltp/test/test_benchmarks.py`` TC (unfortunately they are host-specific).

ALL TCs RUN AS OK (apart from split_frags which was post-edited on the combined branch)