Manage required and optional dependencies separately

Rather than lump all the dependencies together, they are now tracked
as required and optional.  A new get_dependencies method is introduced
which lets you query them separetely, and a special
remove_optional_dependency method which will be used by cpan2efs to
try to deal with circular dependencies more elegantly.
Ignore optional dependencies that create circular dependencies

We try to include recommends (optional) dependencies by default, but a
lot of modules add these and create circular dependencies.  When those
modules are in the core, we can workaround this by trying to use the
core version, but if they are from CPAN and not installed, we have to
delete the dependency so that it gets ignored.
Wrapper method for metadata->get_dependencies

We can probably get rid of this by using the metadata method directly,
but I'm lazy.
fixup! Manage required and optional dependencies separately
fixup! Manage required and optional dependencies separately
fixup! Ignore optional dependencies that create circular dependencies
fixup! Ignore optional dependencies that create circular dependencies
Added a --complete option to efsdeploy_search_depends

This tool is already starting to get some feature creep.  I needed to
be able to search the complete expanded depends as well as the direct
ones, so I added this argument.  This is still not installed, as I'm
not sure I want to publish it for general use yet.