Stringify nested attribute objects

Previously, escaping object attributes would simply call the object's `toString` method which would output as `[object Object]` - losing the entire object. This ensures the object is properly stringified and then escaped.

@saponifi3d we should work on updating the tests to be more comprehensive