MPDStatus: Pattern match using precompiled regular expressions.
MPDIdleMonitor: Rewrite for cleanup.

This rewrites the extremely long run() function, renames the class to
MPDIdleMonitor, moves forced status updating to MPD.java (exclusively) which
will be truely updated by the the IdleMonitor. Remove (and mostly unused)
"old" value parameters.
NotificationService: Make service persistent to option.

If NotificationMode is started, don't unselect it. Keep the service open,
unless the user opts to hit the close button.
NotificationService: Fix warnings.
StreamingService: Warning fixes.
RemoteControlReceiver: Warning fixes.
NotificationService: When the play state is paused, don't send pause command.

This works around an MPD bug, if MPD is paused some versions will toggle to play.
StreamingService: Prevent a MediaPlayer crash if stream halts during buffer.

MediaPlayer can cause an ANR or crash (depending on its state) if the stream
is stopped during buffer and the object is reset or released. Workaround that
by not resetting or releasing during buffering. The disadvantage to this is
that next start we may have some stale bits in the buffer which we'll hear
first, then it'll rebuffer.
Music.java: Refactor the constructor.
MPDStatus: Fix warnings.
MPD.java: Remove duplicate response parsing.

Many tag lists are parsed the same exact way, eliminate this duplication and
clean up the method it uses to parse it.
NotificationService: On playlist change, update the current information.

Rather than update on track change, update on playlist change. This will be
more granular and it will include stream information updates unlike track
changes.
Music.java: Use the URL class to retrieve the URL reference.
StatusChangeListener: Add outputChanged and storedPlaylistChanged callbacks.
[Outputs|Playlists]Fragment: Implement statusChangeListener.

Add statusChangeListener to both of these fragments; this also disables
pullToRefresh in PlaylistsFragment.