Allow user code provide callbacks for various actions/events

This simplifies blivet's code, makes it cleaner and gives other user code than
Anaconda way to react on various actions/events. It is also a building block for
many other applications of callbacks in blivet.

Related: rhbz#1073679
Allow specifying minimum entropy when creating LUKS

Creating new LUKS format requires high-quality random data and such quality may
be specified by minimum entropy of kernel's random data pool required. Blivet
thus need to check such entropy and wait for it to become high enough if
requested by the user code (Anaconda, OpenLMI, blivet-gui, etc.).

In order to allow the user code to give a hint to the users about what's
happening and how they can help with entropy generation, blivet also needs a
callback that is called in case of LUKS format being created with not enough
entropy available.

Related: rhbz#1073679