#325, #786 fixes some issues with spark_button and created first unit tests

#325

- 1), 2) should be fixed with this update
- 3) should be defined what should happen

Open question:

- I don't know if large and small should be exclusive or.
I guess so, but it was not.

Note:

- I tried to minimize updates to the btnClasses map but that didn't work
I filed a but, see code comment on method `updateBtnClassesJob()`

#786

- I think the button tests is thoroughly.
It can be refined of course if issues occur
or if someone has ideas what can be additionally tested

Note:

- drone.io doesn't install content_shell by default
this has to be done manually (I haven't done it myself yet)
if you add `test/run.sh` to the build script for drone.io the test will probably fail