FrankenStein and plain build system improvements.

 * FrankenStein:
    - Catch all exceptions.
    - Use StringBuilder.
    - Use constant string for main block.
 * Plain build system:
    - Support defines and vapis.
    - Dynamically set glib target version.
    - Support "plain" as identifier (additionally to "valama").

 * TODO: - Don't read entire files into memory on frankensteinification. This
           takes a lot of time (and memory). Only act on files where an action
           is required.
         - Run frankenstein initialization asynchronously.