Changes dd_sortedObjectList() to use mergesort with cached sort values

As in title. This reduces the round-start lag to ~2-3 seconds (roughly the end of the "Welcome to Space Station 13" announcement), rather than the 10-20 seconds it takes currently. The main gain from this is the caching of `dd_SortValue()` results - the default `/obj/machinery` implementation returns `"[sanitize(name)]"`, which takes a while to complete on all machinery in `world`.
If I was writing this as a brand new proc, I'd do that, but since it's a replacement for a slower implementation, I'd prefer to leave it as-is.