Ensure attributes keys are symbols

In this Patch attributes keys are converted to symbols to ensure `{ "name" => "myname" }` is the same as `{ name: "myname" }`.

This shouldn't be merged straight and just serve as foundation for discussing this problem and 1 possible solution to it.

This closes #100