add SyncQueueDelegate nonLoaderRequestFailed call

allow non-loader failures (ie deletes) to also notify the SyncQueueDelegate
dismiss the ProgressHUD after sync corner cases
pull to refresh should sync if sync is pending

rather than refresh from server. the app will treats the server as
the ultimate source of truth for observations. in the abscence of being
able to split that responsibility (server for sync'd observations, app
for unsync'd or pending sync observations), we simply avoid fetching
from the server until sync is complete. if sync is pending on a local
observation, fetching from  the server would overwrite any locally
changed values.
add analytics for pull to refresh