* Fixed some issues involving fs::meta_description constructing
With the recent change to use std::variant more closely, I noticed a problem where meta_descriptions of type meta_type::String got defaults of type 't'. This was because the templated ctor for meta_description would convert 'const char *' to 'bool'. This change adds another overload to catch 'const char *', along with asserts to catch problems.
In the process I corrected a few meta_description ctors
It is possible that this change does not go far enough. Perhaps the meta_type argument should be removed, and we should instead create distinct ctor types (rather than relying on templates) and specify the precise meta_type in the overload. Or even go further and remove m_type from meta_description, and instead create an overload that calculates meta_type based on calling std::visit on the variant
* Taking this change a bit further, and removing m_type from fs::meta_description; it was superfluous. Also doing some minor C++-ifications
* fix most instances where the sharedfeat doesn't match what the description implies;
* fix Mahjong Vanilla Syndrome metadata;
* fix xak12 description;
* demote implode and meteorbl to baddump;
* Consolidated floppy_image_device::m_create_fs and floppy_image_device::m_io_fs vectors
We had two separate members in floppy_image_device (m_create_fs and m_io_fs) that contained the same data. Whether the file systems can be formatted or read can be identified by querying fs::manager_t.
For this reason, it seems bad to have these separate members, the seemingly only reason to make the UI code slightly less complicated. For this reason I consolidated these two members and moved the burden of selecting which ones are creatable to the UI code.
This reverts commit ec3cd170e7.
This is problematic in several ways:
* Substantial protection data in source.
* Non-portable code doesn't build with clang.
* General quality issues.