The deleter can be called on a null pointer by shared_ptr. Also added tests with unique_ptr from Boost.Move and shared_ptr from Boost.SmartPtr.
fclose_deleter can be used as a deleter function object for std::FILE pointers returned by std::fopen.