Rewrites 'graph' module to do less work.

The 'tsort' function now requires an explicit parameter to obtain adjacencies
rather than invoking a 'dependencies()' method, and offers control over how the
adjacencies should be normalized before traversal.  The 'tsort' function also
reports the nodes in the cycle if such a cycle exists.  Finally the confusion
between 'tsort' and 'traverse' is eliminated.
Refactors 'bdemeta'.

'dependencies' is no longer a method that is expected to be implemented by all
'Unit' objects.  Instead, the 'resolver' can supply dependencies given a name.

'Package' objects no longer return their flags as strings.  Instead they return
them as arrays for consistency with the other 'Unit' types.

The 'functional' module is removed since we no longer redundantly walk the
dependency graph unnecessarily.
Replaces 'ldflags' with 'ld_input'.

This clarifies the library dependencies of executables and test drivers as
simply input into the linker rather than being implicit dependencies that
happen to also get linked in.