fix long-standing bug. contacts now load without pull to refresh

the solution is not elegant but it avoids changing XMPP Framework. The delegate function for notification that the roster is updated is not exactly reliable. the underlying database is written to asynchronously so it is possible that the full list comes in and it is not written to disk for a little while. Therefore the solution is to setup another fetchedresultscontroller for the xmpp roster. When the roster is changed then we call the functions to update our contact list (essentially a mirror of the roster) to be stored offline. This means there are now three fetchedresultscontrollers which is a lot to look at. The xmpp fetched results are ignored in all delegate functions. it is only utilized for updates to the list to mirror to the contacts entity.