How to totally save a self-contained Blender object to ensure no data is lost?
I don't think there's any easy way to save everything, but the closest to what you want is to activate the automatic packing of external data.
This doesn't, however, save everything. For instance, it doesn't save the render result. 

To activate this, go to File>External Data>Automatically Pack into .blend.



Video files or image sequences will not be packed. 

Painted textures have to be saved as external files before they can be packed (else they will disappear).

Physics cache can be saved to disk (with different commands), but will be saved  on a folder where the original blend file is stored, but will not be packed as part of the blend file either.

For more specifics please see: https://www.blender.org/manual/data_system/data_blocks.html?highlight=pack#data-block-types