Be more hesitant to allocate blocks

Change-Id: I4dc3f9ec6a71ff8302ae964d3147e21bc042536b
__unsafe_unretained -> weak

Change-Id: Ia3382753aeb4d7208763e785536018e4b0387f9c
Stop getting self.session on the wrong thread.

Change-Id: Ie4f4ff5ee766f77091c9a240c19f71f8c72bc1d9
Add new SPAsyncLoading API + unit tests

Add +[SPAsyncLoading waitUntilLoaded:withKeyPaths:timeout:then:] to provide loading of nested properties without multiple calls to SPAsyncLoading.

Change-Id: I203eb0da0e99cbfcc40605f97c1e64d73833c345