Add support for disabling passes on load of GCC plugin.

        * gcc_plugin/gcc-plugin.cpp (parse_arguments): Added runtime arguments
        for printing plugin and pass information.
        (plugin_init): Print plugin and pass information only if requested.
        * gcc_plugin/mageec-plugin.h (mageec_gcc_pass_info): Declared.
        * gcc_plugin/plugin-info.cpp (mageec_gcc_pass_info): Added function
        to print passes internal to GCC and attempts to disable all.
Make use of stdout v stderr and std:: consitent throughout.

        * gcc_plugin/gcc-callbacks.cpp (mageec_gcc_finish): Stream info/debug
        info out to stderr.
        (mageec_gcc_start_file): Likewise.
        (mageec_gcc_finish_file): Likewise.
        * gcc_plugin/plugin-info.cpp (mageec_gcc_pass_info): Likewise.
        (mageec_gcc_plugin_info): Likewise.
        * mageec/mageec.cpp (mageec_framework::init): Make use of std namespace
        consistent.
        (mageec_framework::new_file): Likewise.
        (mageec_framework::end_file): Likewise.
        (mageec_framework::finish): Likewise.
        * mageec/mageechash.cpp (main): Likewise.
        * ml/ml.cpp (mageec_ml::init): Likewise.
        (mageec_ml::new_file): Likewise.
        (mageec_ml::end_file): Likewise.
        (mageec_ml::finish): Likewise.
Correctly pass on compiler information to machine learner.

        * mageec/mageec.cpp (mageec_framework::init): Pass on compiler_version
        and compiler_target instead of empty strings.
Provide support for pass lists and disabling passes on plugin launch.

Once the machine learner has loaded, the compiler requests the pass list
loaded via the database interface and then disables all passes.

        * gcc_plugin/gcc-plugin.cpp (plugin_init): Disable all passes provided
        by database on launch.
        * include/mageec-db.h (mageec::database): Declared first database
        interface.
        * include/mageec-features.h (mageec_feature): Mark name virtual.
        (basic_feature): Implement basic mageec_feature.
        * include/mageec-flags.h (mageec_flag::get_feature): Rename to value().
        (basic_flag): Implement boolean flag.
        * include/mageec-ml.h (mageec_ml): Add private database and flag list.
        (mageec_ml::all_flags): Declared.
        * include/mageec.h (mageec_framework::all_flags): Declared.
        * mageec/mageec.cpp (mageec_framework::all_flags): Defined to call list
        of flags known to machine learner.
        * mageec/features.cpp (basic_feature): Added basic feature definition.
        * mageec/flags.cpp (basic_flag): Added basic flag definition.
        * mageec/Makefile.am: Add features.cpp, flags.cpp to libmageec.
        * mageec/Makefile.in: Regenerated.
        * ml/database.cpp (database): Defined initial MAGEEC pass list
        database.
        * ml/ml.cpp (mageec_ml::init): Load database and pass list on
        initilisation.
        (mageec_ml::finish): Delete database on plugin unload.
        (mageec_ml::all_flags): Returns flag list.
        * ml/Makefile.am: Add database.cpp to libmageec_learner.
        * ml/Makefile.in: Regnerated.
        * configure.ac: Add checks for SQlite3.
        * configure: Regenerated.
Solve flag/pass discrepancy by renaming flags to passes.

        * mageec/flags.cpp, include/mageec-flags.h: Rename to:
        * mageec/passes.cpp, include/mageec-passes.h.
        * include/mageec-ml.h: Update references to headers.
        * include/mageec-passes.h (mageec_flag): Renamed to mageec_pass.
        (basic_flag): Renamed to basic_pass.
        * mageec/passes.cpp: Likewise.
        * gcc_plugin/gcc_plugin.cpp (plugin_init): Update references to
        new pass class names.
        * include/mageec.h, mageec/mageec.cpp (mageec_framework::all_flags):
        Renamed to all_passes, updated references to new class names.
        * include/mageec-ml.h, ml/ml.cpp (mageec_ml::all_flags): Likewise.
        * include/mageec-db.h (get_flag_list): Renamed to get_pass_list, update
        references to new class names.
        * ml/database.cpp: Likewise.
Readd accidently removed -Werror

        * ml/Makefile.am: Readd -Werror to flags.
        * ml/Makefile.in: Regenerated.
Add machine learning result database design and support for adding results.

        * include/mageec-db.h (add_result): Add support for adding result to
        database.
        * include/mageec-ml.h (add_result): Add result struct based variant.
        * include/mageec-result.h (result): Create structure for holding
        machine learning result data.
        * include/mageec.h (hash_data): Add global hash function.
        * mageec/Makefile.am: Add hasher.cpp to libmageec.
        * mageec/Makefile.in: Regenerated.
        * mageec/elfhash.cpp: Use hash_data instead of built in hash.
        * ml/database.cpp (initdb): Create passorder and result tables.
        (add_result): Add storage for result structure.
        * ml/ml.cpp (add_result): Convert to result structure and add to
        database.