Refactoring collector service way of creating files
Main changes are:
- Files are written from different processes without blocking the asyncio loop.
- Several events with different trigger pulse ID can be combined into the same NeXus file.
- Minor improvements in memory management, freeing memory while writing to files.
- Removed dependency on nexusformat library. Using directly h5py instead allows for more flexibility.