text: Title: Camel to snake case conversion doesn't add an underscore after a digit
  Body: The `pyutils.camel_to_snake` function does not add an underscore if a capital letter occurs after a non-letter character. For example, `came_to_snake("python2Thing")` returns `python2thing` instead of `python2_thing`. This seems counterintuitive, as it changes the case of the `T` without adding an underscore as usual.