Rewrite fallback logic with C# 5 async
Break monstrous fallback Login method into submethods, now that we don't need closures