Generate both .c and .h files for plugins

Instead of generating .c files from plugins' .h files, it is better to generate
both .c and .h files from a file that is used only as a source of data for
generating those files. This way we have a better control of what ends up in the
.h file and what ends up in the .c file. In particular we can have .h files that
contain no code and can thus be easily included by other code.

For the build process it is also better to have source files for the generator
using a unique extension because that simplifies pattern matching.
Fix the test-library target

It wasn't kept up to date with the recent changes.
Make the '-lm' dependency libd_utils' dependency

The libbd_utils.so shared library should have the math library dependency
instead of specifying it as a dependency for every build using the bd_utils
library.
Make the bd_utils library a blockdev library's dependency

libblockdev.so uses functions from the libbd_utils.so and thus should have it as
a dependency.
Make the boilerplate_generator usable as a python module

This means the scons build system will be able to use it directly.
Use the bd_utils library's global header file

That's how the library is supposed to be used by the external code so we should
do it the same way.