cplay: moved mplayer_send(arg) to class MPlayer

An individual opening of and writing to the mplayer fifo was pulled into a
MPlayer specific function to be re-used on other occasions. Furthermore error
handling for opening the fifo has been introduced.
cplay: app.counter(...) sanity check

Negative values (e.g. due to a broken player output) given to this function
caused cplay to crash. This introduces a sanity check of the values given to
app.counter() and uses the previous values if the player reports negative ones.
cplay: Add speed control for mplayer

The patch introduces three new keys [ ] = to control the playback speed.
A speed command is sent to mplayer using the mplayer control fifo.
Note that this redefines the previous key binding of '='.
cplay: handle IndexError in keymap.process

Hit this by pressing Shift+up on an ancient machine:
Traceback (most recent call last):
  if self.methods[key] is None: return 0
IndexError: list index out of range
cplay: terminal size fix for ncurses 5.8

New ncurses limit checks enforce non-zero size when calling newwin(...).

Combines:
http://git.sysphere.org/play/commit/?id=0b3fab858e60a72bc0eb5173536bb805f03e3b7f
http://git.sysphere.org/play/commit/?id=e01a74776c421b309da1f878f401da734482fa53
http://git.sysphere.org/play/commit/?id=a29a8a9243e01d3fca67c4b3eb3dfb3ecdeb71e7
cplay: added missing formats to mplayer
cplay: Add equalizer support for mplayer

Two new keybindings 'e', 'E' are used to send an audiofilter equalizer command
to mplayer through the mplayer control fifo. Equalizer settings are controlled
by the array EQUALIZERS. Key binding is undocumented.
cplay: control mplayer with internal, not named pipe

This patches removes the named pipe used for controlling mplayer and replaces
the control mechanism by piping commands to stdin of mplayer in -slave mode.
This fixes the problem that multiple instance of cplay could not be used
simultaneously before as they were sharing one control fifo for their mplayers.
Furthermore it avoids all kinds of problems caused by insufficient file system
permissions and IO blocking.
cplay: automatically load playlists in path

If cplay is started with a path as the argument this patches ensures that the contents of playlists found in the provided path will be added to cplay's playlist.
cplay: Optimizing stop_shell

A tiny optimization has been carried out in stop_shell, using one instead of
two ifs to increase readability and avoiding a harmless but unnecessary call of
app.restore_default_status().
cplay: changed indicator for tagged files

Instead of a hash '#' an asterisk '*' is used to denote tagged files. This
follows the scheme of some other major ncurses programs such as mutt.
Slight change to mplayer pipe error
Change debug, add comments, remove kludge

Changed the -v[erbose] to -d[ebug] that now takes the debug
output file as an argument.
Fixed infinite "Working..." when adding tagged dirs
Alsa support from Tom Adams

Might not be very robust yet, has some weird problems with Ubuntu Natty:
if the volume is set to zero, it can't be reenabled via cplay. Note that
this actually happens with alsamixer too. The only way to get sound back
is to use PulseAudio aware controls.

Works in Maverick, though.
Added pyalsaaudio requirement, reordered requirements.
Merge branch 'tpievila-master'
cplay: Fixing ALSA volume increase/decrease
cplay, README: Updated usage string.
cplay: immediate next_song() player set-up (DB#287871, DB#303282)

The player has to be set-up right away when changing songs.
Otherwise the user can manipulate the old offset value while waiting
for the delayed play to trigger, which causes the next song to play
from a wrong offset instead of its beginning. This fixes DB#287871 and
DB#303282.