Improve error reporting when we encounter broken exception objects

Undo parts of 935ea660e (which inadevrtently broke 153a6b38), while
keeping the entire shebang running after issuing a stern warning.
Move hrefaddr to DBIC::_Util, give most functions a prototype

This way we can safely do e.g. ( hrefaddr $foo, $unrelated_bar )
Have tests recover gracefully when File::Spec->tmpdir gives us lemons

Once and for all solves http://www.cpantesters.org/cpan/report/36d4436d-7888-1014-a278-e5322b825c07