Use std::unique_ptr for widget handles.

This gets rid of the somewhat error prone custom handle and ownership
classes I previously used to handle widget lifetimes.  The new type is
gtk::unique_ptr, which is a std::unique_ptr with a custom default
deallocator which calls the destroy method.

Uniquely owned objects can be created using the gtk::make_unique free
function.  This sinks the floating reference so a container will not
destroy the widget before the unique_ptr goes out of scope.