Move to maps
Allow fallback encoding of any struct
Use map keywords syntax
Fix encoding of empty maps
Fix elixir 0.13.1 warnings