Refactor model loading to create slightly fewer redundant instances

Refactors a bit of the model class to not create as many unnecessary objects. This is a superficial fix for an underlying issue where an existing model instance isn't properly bound to the loaded set if it's recreated and then the new instance is thrown out in favour of the original.

Also did a bit of SimpleSet cleanup.

@kristianpd @nickjs