Detecting invalid return types for save_minimal

both member and non-member, static_asserts look good
Adding save_minimal to many other traits
specialize_serialize now works with versioning

todo: load, save, and non member versions of them all
making versioned compatible with specialization

Also fixed a bug with some type traits that would erroneously return true if
an odd number of boolean variables were true when the desired behavior was to return
false if more than one boolean variable was true.

Need to revise the no matching serialization to properly fire if a type is specialized
but has both versioned and non-versioned functions of the specialization type.