Fluidware: An Approach Towards Adaptive and Scalable Programming of the IoT