Extend `finish` method to return a Promise.

That Promise gets resolved once all data has been consumed.
Change recording methods to return and accept recording object.

It allows the methods `_startRecording` and `_endRecording` to
share an object with information.
Use new `finish` method in `VBusRecordingConverter`.
Refactor `FileSystemRecorder` to enable sync and non-sync recording.