(maint) reduce duplication of logdest option handling

Prior to this commit there were 6 different puppet applications
with independent implementaions handling the `--logdest` option,
including two that were logging directly to stderr rather than
using `Puppet.log_exception` helper. This commit pulls those
implementations up into Puppet::Application and unifies against
the single implementation using `Puppet.log_exception`. Additionally
it now has unit tests.