Changed indentation to make the code more readable.
Encoding a dictionary using both keywords and strings as keys now works according to the specs.
Now the decoder fn can receive a hash of options. The first supported option is :str-keys?, which is used when it's desired to have strings (i.e. "key") as dictionary keys instead of keywords (i.e. :key).