Support '--without something' or '--with something' in command line

And in turn, this enables or disables 'FLAGS_' variables in the
makefile parsing name space. The following commit would make it
easy to use such flags in order to conditionalize statements
in the build.
Support gmake-compatible ifeq/ifneq/else

This can be used to implement conditional builds. For example:

    FLAG_optimization ?= enable

    ifeq (${FLAG_optimization},enable)
    CFLAGS_OPTIMIZATION=-O2
    else
    CFLAGS_OPTIMIZATION=
    endif

    DEFAULT_CFLAGS=${DEFAULT_CFLAGS_COMMON} ${C_WARNINGS} ${CFLAGS_OPTIMIZATION}
Makefile.Parser: Refactor collection of targets/patterns into Writer
Allow printing available flags