common exception base class

All backends' exceptions now inherit from DecodeError. This addresses
situations where backend-specific exceptions could be raised when decoding was
underway rather than being caught on opening. This manifested in beets, for
example, as occasional crashes when the Core Audio backend raised a MacError
partway through decoding a file.