give each command its own test class

This allows us to costumize tests more for the individual commands
and split their tests into more methods which makes easier to see
what part of the command is acting unexpected.
improve set command test and fix found errors

Split the test for the check command into more methods to make tests
more thorough and specific. Also fixed an error found with the new
tests, where the program would print the error message for not giving
a pin value before pins for each pin. E.g for the following command

    CHECK 1 1 1

The error message for not giving any pin value would be printed 3
times - one for each '1'.
add MIT license