Poe::Component::Client::MPD is a poe component to interact with mpd (Music
Player Daemon) servers.

it can be created with the following:
    POE::Component::Client::MPD->spawn;


upon creation, it will spawn two things:
 - a private session $_HUB that will act as an internal dispatcher
 - a session $COMMANDS to send general commands
 - a session $PLAYLIST to handle playlist events
 - a session $COLLECTION to search through it
 - a private poe::component::client::tcp that will handle the communication
   with the mpd server

you aren't allowed, under any circumstance, to try to communicate with the
private components.


here are some examples of how it works internally:

moving an item in the playlist
- you send a 'move' event to $PLAYLIST
- caught by $_HUB::_onpub_default
- create a pococm-message and yields a '_dispatch' event with the message
- caught by $COLLECTION::_onpriv_dispatch
- yelding a _onpub_move event with the message
- caught by $COLLECTION::_onpub_move
- completes the message and posts a _send event to $_HUB
- caught by $_HUB::_onpriv_send
- which sends the pococm-message to the tcp session
- sending things over the wires
- when answer comes, it sends back a _mpd_data event
- caught by $_HUB::_onprot_mpd_data
- transforming it to stats or whatever if needed
- calling a post-event if needed, going back to _dispatch with the completed event
- otherwise, returns data (or nothing if no answer awaited)



regarding naming scheme:
 - since there's no public subs / methods to be called, all subs will begin
   with an underscore ('_'). this will have the added benefit that tests for
   pod coverage will be happy. ;)
 - events that are internal to pococ-mpd (ie, sent from within the same poco)
   are referred to as private.
        event:   _<event_name>
        hanlder: _onpriv_<event_name>()
 - events that travel between pococ-mpd and pococ-tcp are refered to as
   protected.
        event:   _<event_name>
        hanlder: _onprot_<event_name>()
 - events that form the api of pococ-mpd are so-called public events.
        even:    <event_name>
        handler: _onpub_<event_name>()

