Fix for bug 986981

Signed-off-by: achbed <github@achbed.org>
Reached a begining, working some helper function + 'page' changing...
Working page changing, plus changed to more OO style btn|key definition.
Working cues, huge success :D
Working cues, huge success :D and fixed the led small thing...
First "page" finished
    -Added loop while pressed buttons, with fancy mode change button,
which switch between loops and looprolls...
    -Added play button, just in case you want to switch it while you
pressing the cue buttons...

I think the code is not the nicest but makes sense for me, and works
like a charm, so far I did not managed to find any bug.

Review please if you have time !
Fixed a redraw problem and changed NLM to fully static.
Changing to more oop way, having only key types, no more strange connection between keys and callbacks.
Changing to more oop way, having only key types, no more strange connection between keys and callbacks.
Page 8 became 'navigation' panel
Added Zoom buttons.
Added 2nd page / Seek functionality.
Pretty cool. Getting easy to add new things as the framework gets
better.
Fixed a small problem with seek
syntax fixes around the static array.
Added forum url.
Removed test code, added back real one.
Modified the forum url.
Fixed one ampersand escape in the xml.
Fixed the forum url.
Soorrry. Most difficult part is to write the forum address... :)
Added sampler support (up to 8)
Modified the playlist shuffling algorithm to avoid placing two instances of the same track next to each other. It checks the IDs of the tracks before and after the positions of the tracks that will be swapped, and if there's a match, it tries again with a new position.

It tries a maximum of 10 times, which should be far more than enough for normal situations. It uses the PlaylistTracks table in the database to get its track ID numbers. I didn't notice any significant performance decreases, even with hundreds of the same 10-15 tracks in the AutoDJ playlist.