Reduce memory usage by optimising ArcWithoutWeak and by removing async finalisation
This makes two changes:
- ArcWithoutWeak is made NonNull, meaning that
Option<ArcWithoutWeak<T>>
is now 8 bytes instead of 16. - Async finalisation is removed in favour of finalising objects when reusing object slots
Both reduce memory usage for programs with lots of processes, and simplify the code base.