Also moves delete and action logic to a shared implementation
Also add finaliser logic for safety. Also better threading. Also more cleanup.
Not sure why these aren't being detected on master right now - they should be...
There is now a CreateContext method for retrieving a stand-alone context for threaded use. We may want to add safety against this context being disposed (or just return a fresh one if it is).