Simplification and improvments of the pulsing functionality

This change is getting rid of the redundant pulse_* methods. The pulsation
is popssible to control through the 'pulse' parameter on the object and/or
on the function level.

The pulsation loop was modified to allow different styles of pulsation.
Currently it's possible to pulse in the direction UP, DOWN, or BOTH ways.
The direction can be choosen through the 'pulse_dir' parameter on the
object and/or on the function level.

The '__pulse_loop' function was modified to have constant number of steps per second.

The 'set_leds' function supports the pulsation as well now.