Revert the Backend to its pre-prepared state.
Most users won't need to use this function.
If this function throws an error, the Backend will not be functional.
Concurrent calls to this function from different threads will block until preparation has completed. However, concurrent calls to this function from a single thread might not, i.e. the first call will block but subsequent calls might return before the first one. (Though they will be safe in every other respect.)
if unpreparing the backend-specific services failed — this will be a backend-specific error