fixup halos segfaulting

fixes up commit 82c6b98907d9709aef0d23a3846c1e75ac48e1d5

Use smart "handles" for halos which have been added to a halo
manager. The handles remember what manager they came from, and
delete themselves automatically on destruction.

This wasn't an issue when haloes were basically managed by a
C library, but if we want to get rid of the static singleton
system, the handles need to be smarter than just int's.
Merge branch 'master' of git://github.com/wesnoth/wesnoth
add update_label function to saved_game
make a variable const
remove unneeded variable
remove unneeded variable
fixup safebool syntax in halo::handle

There was a subtle flaw introduced by using safebool in halo_record,
but defining the handle as a pointer to this -- the pointer also
is castable to bool so it makes mistakes very easy. We replace the
safe bool stuff with a function "valid" of halo_record, and fixup
the places that were supposed to be using this test.

Also move the NO_HALO variable back to the header.

fixes up commit 82c6b98907d9709aef0d23a3846c1e75ac48e1d5
Merge branch 'master' of git://github.com/wesnoth/wesnoth
add operators == (attribute_value, std::string)
fixup 'add operators == (attribute_value, std::string)'

we need to keep the code form using these functions in case of c["a"] ==
0