count_in/out_serializers will now count the number of specializations if a type is
specialized, otherwise it will count the number of non-specialized serialization functions.
as a result of this, is_output/input_serializable now works as you would expect from the name
and will return true for correctly configured specialized types too.
this caused some logic changes to need to happen in cereal.hpp, mostly within the PROCESS_IF macro.
added some tests related to this change and #180fixes#180
If someone attempts to have both a versioned and non-versioned serialization
function, they will get a compile time error.
relates to improvements in #23
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.