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'.

The 'functional' module is removed since the dependency graph is no longer
redundantly traversed.

The 'ldflags' option is now replaced by 'ld_args' and so 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.

Traversal and disk access is done only in the 'resolver' module.  The 'types'
module now only contain value types that do some additional processing in their
initializers to facilitate straightforward retrieval of their properties.  This
will allow simpler tests.

The 'ninja' module no longer needs to distinguish between 'Application' and
'Group' instances since all instances of 'Target' supply the necessary
information.  This eases testing of the 'ninja' module without requiring actual
instances of 'Application' and 'Group'.

The 'commands' module is split up into a 'ninja' module and a 'testing' module
for better separation of concerns.

The configuration is now specified in a flatter form with each unit's
configuration being grouped together.

Cyclic dependencies are now reported stating the actual cycle instead of
overflowing the stack.