Hibernus: Sustaining Computation during Intermittent Supply for Energy-Harvesting Systems