Service compartmentalization and incremental updating.

This is the large merge that I've been talking about. I know of no outstanding bugs at this moment, so (IMHO) it's time to get it out there. There are a few hard steps to take for this code after this, but I believe they will not be nearly this size.

This does fix a few bugs found along the way, but this was mostly a compartmentalization cleanup. This also adds incremental updating of the various services the old NotificationService had, rather than the one big update. If I had to, I'd call it services v3.

Outside of the above mentioned, there are a couple of small patches for:
* Server activity detection & handling. I don't like the solution that this PR brings (which the SDK is extremely limited for) but it's light years ahead of the old method and robust enough to do what needs to be done for the time being. I have every intention of a large improvement when it comes to this, but I probably have a couple of PRs before the code is where it needs to be for that improvement.

* A couple of helper methods to deal with no cover art resources.