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 the dependency graph is no longer
redundantly traversed.

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

Excessive use of generators is removed in 'resolver' in favour of simpler for
loops.

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 units
configuration being grouped together.

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