Removes implicit caching from resolvers.

In an effort to ease testability of the resolvers, implicit caching is removed
from their implementations.  To ensure performance, however, any resolution is
supplied with a 'dict' guaranteed to contain any dependency already resolved.
This guarantee can be provided by resolving units starting from the lowest
levels in the dependency hierarchy (i.e. reversing the topological sort).
Introduces 'Patcher' and 'OsPatcher'.

These classes can monkey-patch access to the filesystem in order to make other
components testable.
Introduces 'bde_items' tests.
resolvers: 'dependencies()' method returns a set.

The ordering of items returned by the 'dependencies()' method is irrelevant, as
the topological ordering will be determined from the overall dependency
structure.  To formalize this, and to ease testing the return value using set
equality, the methods now return 'set's.
Introduces 'PackageResolver' tests.
Introduces 'UnitResolver' tests.
Fixes identification of third-party packages.

Third-party packages are determined by a '+' character in their name.
Previously, if the entire path to the package contained a '+' character it was
considered a third-party packages.  This commit strengthens that requirement to
the specification.
Introduces 'ResolveTest'.

This tests the 'bdemeta.resolver.resolve' function.