Multithreaded ciphers (Fixes #12)

 - Multithreading uses async and await now enabling better control flow.
 - New 'RunningButton' shows indeterminate progress bar when running
 - Ciphers' crack methods run on a separate thread (implemented on cipher side).