Software in the natural world: A computational approach to emergence in complex multi-level systems | Synapse