Unify the different Share types

This switches the data layer to use one [*] share (Share) instead of one
Share per algorithm (ReedSolomonShare, ShamirShare, NTTShare, RSSShare,
KrawzyckShare). This should reduce type-casting and allow for more
readable code.

In addition I've removed the CEVALLOS and RABIN_BEN_OR share types.
Infomration checking can now be employed over any share type and is
stored as "add-on" information to the share.

[*] One exception is KrawcywkShare -- due to it's differences (added key
field) I've created a minimal sub-class. If we enrich the metadata
collection to include multiple types (instead of just Integers right
now) we could remove this subclass and store the key as metadata.