Fix encoding bug
Combining the Marshaler and Unmarshaler interfaces had an unintended consequence. UnmarshalSia requires a pointer receiver, so it couldn't be satisfied by non-pointer types. And since the interfaces were combined, this meant non-pointer types couldn't be recognized as Marshalers either. Splitting them apart again fixes the problem.