Branch commit. First experiments with shared_ptr. There is a crash on exit due to deallocating the NullDomain object twice. (One from shared_ptr and once in global destructors)