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.
NowPlaying*Fragment: onPlaylistChanged, only update when we're streaming.

For many workflows, the update will needlessly occur twice due to track change
and playlist change occuring both occuring on a typical track change. Since
commit 55029f96 we no longer need to worry about the playlist change causing
our data to be out of sync, except when the metadata might change without track
change, such as when streaming.
NowPlayingFragment: Refactor track seek bar, allow hiding when unused.

This is a refactor of the track progress bar which makes updating more
granular and allows it to hide when it's unused, such as when streaming
or when stopped.
NowPlayingFragment: Cleanup audioNameText updating.
NowPlayingFragment: Remove superfluous updateStatus after updateTrackInfo().
NowPlayingFragment: Remove status null check at updateStatus() start.