R2: Incremental Reprogramming Using Relocatable Code in Networked Embedded Systems