[config] require config filename to be finalized

Earlier versions of pe_build did ad-hoc merging/finalizing of the
Config::Global and Config::PEBoostrap objects, which lead to a lot of
methods that behaved lazily. This made it very hard to reason about what
the filename actually was.

This commit requires that the configuration object be finalized before
accessing the filename, and adds sane handling for filename decection when
the filename is explicitly given.
Merge branch 'config-finalize-filename'