Implement async patterns

Use Dispatcher.InvokeAsync() instead of Dispatcher.Invoke() , this also fixes deadlocks when 2 threads tried to log a message in the status bar.
Use async/await in PlaySourceBtn_Click()/StopSourceBtn_Click() so UI is responsive while starting/stopping the radio player.