Refactor "{ name }" code

There were several places where I was decoding an array of dynamic
objects using a rule. If it's ToString() returns "{ name }" then assume
a name property/field and return that. Otherwise, return the ToString().
This works well, but may need to be adapted in the future. Thus all the
instances have been pulled out into a single utility method for future
editing.
Fix Startup Assertion

The assertion had been warning me about a rare race condition where the
list is run through a binary search while its being sorted. These two
operations cannot be done in parallel, so all _list usage is protected
by locks now to prevent a search from happening concurrently with a
sort.