MPDStatus: Pattern match using precompiled regular expressions.
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.

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.

Finally, this patch turned out to be a small refactoring, so there are
many changes not targeted by the description.

For more information about how persistent notification works:
https://github.com/avuton/dmix/wiki/How-the-services-work-in-MPDroid
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.
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.
NowPlayingFragment: Rename volume seek bar field, move method to order.

Fix 4b96c4c where I didn't realize that many of the methods were in order,
also rename progressBarVolume to seekBarVolume, as it is a seek bar object.
NowPlaying*Fragment: Do not allow track info update prior to connection.

Do not allow track information update prior to connection, initiate a track
information update per the connectionStateChanged listener.
Music.java: Remove superfluous method, use isStream().
JMPDComm: Perform format, fix many text-only warnings.
JMPDComm: When possible, give collections an initial capacity.

Fill in as many initial capacities as is possible. Fixes many
performance warnings.