Change ARDOUR::init return type to bool type for success/failure
Prevent libardour from being initialized more than once

This is not thread safe of course, it is not intended to be.

This was implemented as at one stage ARDOUR::init was being called multiple
times in the testsuite which was causing a subtle bug that took some
time to track down.
Move initialization of libardour from ARDOUR_UI class into main()
Add PBD::init and PBD::cleanup

A bit of refactoring to move initialization of libpbd into libpbd
rather than rely on "client" code(ui,libardour,tests etc) to do it
Call PBD::init in ARDOUR::init and PBD::cleanup in ARDOUR::cleanup
Call Gio::init from PBD::init instead of ARDOUR::init

PBD needs Gio for PBD::copy_file and perhaps others
Call setup_libpbd_enums in PBD::init for portability
Remove call to PBD::ID::init as it is now done via ARDOUR::init
Move curve test file handling in main() until after ARDOUR::init is called

This means it doesn't need to call PBD::ID::init directly, which it now
shouldn't be doing