Refactor scoped_{ptr,array}<>.
Refactor scoped_{ptr,array}<>.

Now, most of their code is held in common by a class scoped<T, traits>, where
'traits' is a class which defines certain typedefs (value_type, pointer,
reference) and a method 'destroy()' to delete the pointer.  scoped_ptr<T> uses
ptr_traits<>, and scoped_array<T> uses array_traits<>.

sfiera/libsfz,sfiera/libsfz