Better asset cleanup

Improved asset cleanup by providing the kill() method, which first
"dooms" an asset and then calls its destroy() method.

Any "doomed" asset will be cleaned up and removed from the scene without
further processing during their next rendering pass; assets deleted from
the scene will NOT be purged from memory and MUST have their destroy()
methods called to ensure they are fully cleaned up.