ODBC backend with unified database product infos

Because function call was not virtual MSVC builds failed at runtime.
Supports now the vendor strings and unified product string too.
The product string is always lowercase and related to enum last part.
Having such a uniform string allows to utilize it for special string
building purpose (like filenames for matching *.sql files).

Usage:
------

// setup connect params and dsn
soci::connection_parameters params("odbc", my_dsn);
params.set_option(soci::odbc_option_driver_complete, "0");

// connect database
soci::session sql;
sql.open(params);

// get the ODBC backend
soci::odbc_session_backend* backend = static_cast<soci::odbc_session_backend*>(_t_sql.get_backend());

// read the current product infos now
std::string vendor = backend->get_database_vendor_info();
std::string product_string = backend->get_database_product_string();
soci::odbc_session_backend::database_product product = backend->get_database_product();

// assume you are connected to PosgreSQL:
// vendor = "PostgreSQL"
// product_string = "postresql"
// product = soci::odbc_session_backend::database_product::prod_postgresql

// assume you are connected to MSSQL:
// vendor = "Microsoft SQL Server"
// product_string = "mssql"
// product = soci::odbc_session_backend::database_product::prod_mssql