Find bison executable and provides macros to generate custom build rules

The module defines the following variables:

BISON_EXECUTABLE - path to the bison program
BISON_VERSION - version of bison
BISON_FOUND - true if the program was found

The minimum required version of bison can be specified using the standard CMake syntax, e.g. find_package(BISON 2.1.3)

If bison is found, the module defines the macros:

BISON_TARGET(<Name> <YaccInput> <CodeOutput> [VERBOSE <file>]
            [COMPILE_FLAGS <string>])

which will create a custom rule to generate a parser. <YaccInput> is the path to a yacc file. <CodeOutput> is the name of the source file generated by bison. A header file is also be generated, and contains the token list. If COMPILE_FLAGS option is specified, the next parameter is added in the bison command line. if VERBOSE option is specified, <file> is created and contains verbose descriptions of the grammar and parser. The macro defines a set of variables:

BISON_${Name}_DEFINED - true is the macro ran successfully
BISON_${Name}_INPUT - The input source file, an alias for <YaccInput>
BISON_${Name}_OUTPUT_SOURCE - The source file generated by bison
BISON_${Name}_OUTPUT_HEADER - The header file generated by bison
BISON_${Name}_OUTPUTS - The sources files generated by bison
BISON_${Name}_COMPILE_FLAGS - Options used in the bison command line
 BISON_TARGET(MyParser parser.y ${CMAKE_CURRENT_BINARY_DIR}/parser.cpp)
 add_executable(Foo main.cpp ${BISON_MyParser_OUTPUTS})