Modernize BDDiskArbitrationSession

* Make the delegate weak.
* Fix the session callbacks to use a weak pointer for self to avoid
  potential crash if dealloc happens on a different thread.
* Unschedule the session from the run loop just in case it keeps the
  session alive.
Fix the error domain used by BDDisk