Allow user code creating free space snapshot

Sometimes the user code (e.g. Anaconda) needs to snapshot available free space
so that it can lately read it and calculate with it.

Related: rhbz#1132436
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
Remove sanityCheck functions from blivet sources

This code is installer-specific and should thus live in the installer's
codebase.
Move _verifyLUKSDevicesHaveKey and its exception to anaconda

They are only used by sanity check that has been moved to anaconda's codebase.
Remove tests for the sanityCheck

The code is no longer in the blivet's codebase.
Allow specifying thin pool profiles

Related: rhbz#869456