Adds unit tests showing that firstObject, firstSelectableObject and lastObject fail to update properly when swapping out the content of an SC.ArrayController.
Fixes SC.ArrayController so that firstObject, firstSelectableObject and lastObject update properly when swapping out the content.  This also ensures that when allowsEmptySelection is false, that the selection changes to the new first object when the content is swapped.