Encodable/Decodable improvements; add `user_enum` macro for string enums