Convert the value to a string if there is no default conversion listed.

This is a safety / convenience feature to help ensure that conversion to JSON mostly always will work (barring types that don't convert to string nicely.)
Refactored value conversion out to a separate method.
Added initialization argument to control str conversion fallback.