Bind Mesh View Controller to selected meshes instead of selected objects

That's all it ever wants anyway, but when switching view controllers, there are instances where it tries to use any selected object as a mesh, which fails horribly. This solves that, and renaming the property to selectedMeshes makes this explicit.
Fixed potential infinite loop with -[NSIndexSet map:]

If there were no indices, then self.firstIndex and -[NSIndexSet indexGreaterThanIndex:] would both return NSNotFound aka UINT64_MAX, which would of course always compare equal to self.lastIndex (also NSNotFound). Thus an infinite loop. That's fixed, and a test case added to verify the fix.
Selection changes in the view now properly update the source list.

That was quite a fight, since expandItem: doesn't work unless that item's parent is already expanded (or, presumably, otherwise known to the source list), because the outline view does not know about a child item of something that's not been expanded yet until it was. And it can't select it, obviously. So now the source controllers know of their parent, and when selecting, they get opened in reverse order (oldest first).