such refactoring, much different, wow

OK I did way to much refactoring in a single commit to be sane.
I changes the structure of the application so it has a library in it's
core.

In addition to that I refactored playback to use the strategy pattern.
This in turn makes the code for new types of actions fairly simple to
write, yay!