Support for naming strategies (snake_case)

Implementation for #393
May be a different PR with the dual support and making the ObjectMapper naming strategy the default? If you prefer that we could pull this in and work iteratively on that as a seperate PR? What do you think?