Make Runtimes and model_datas singleton objects

These both now take XBlocks are the first argument in most methods, and
uses the ids from the block the method is operating on, rather than
baking scope ids into the runtime and model_data objects.

[LMS-827]