The Programming Language Aspects of ThingLab, a Constraint-Oriented Simulation Laboratory | Synapse