SafeAssignment protects hash-style assignment too

Okay, here's my attempt at #248. 

Not thrilled about having to override both `custom_writer` and `[]=`, but due to how the `alias_method` in Mashie worked, I couldn't see a simpler way to make sure all writes were always checked for safety. 

What do you think?