First round of cleanup with ExtCore

We need to clean up lots of the code so we can use VFSPT, this removes some of the dependencies on maybe and asyncMaybe, favouring code from ExtCore rather than copied code.