Better buildifile support

If a buildifile exists, command-line flags are still passed on to the LIBS variable
If a buildifile does not exist, buildify makes an empty one.
Doing some major movement and modularization

This adds command-line arguments and an easy way to create them,
Mode detection and constant mode usage, which decreases compile time

Still left to-do:
> Build a registry with md5sums of files to determine if they are
up-to-date or needs to be compiled again