Marshaler UUID tweaks

Makes the marshaler better support raw bytes when marshaling and unmarshaling UUIDs, which improves compatibility with alternate UUID representations.

Adds support for "Blind" versions of the marshalers that don't take the TypeInfo as a parameter (and therefore can be implemented without importing this package).

Tosses in a few UUID marshaling tests.

Removes redundant type assertions for Marshaler in all of the type-specific methods. Only change this should have is that the recursive call in case of a pointer won't pick up the Marshaler interface assertions, which would only happen if you passed a pointer to a pointer to a struct (since pointers to structs implement the struct's interfaces as well and would have been caught the first time through the type assertion).