* Support more than 26 columns
Google Sheets default to just 26 columns (A-Z) and we need to
explicitly add more columns if we need them.
Fixes#2760
* Improve Google Sheets upload
- upload in chunks instead of serializing the entire document at once
- Free up resources as we go
- stop if an error occurs
- reduce batch size to try and stay in 10MB request size limit
(but need a more dynamic way to do this probably for very wide
sheets or sheets with large values)
* Add basic test and do some cleanup
- add test for columns > 26
- refactor to allow testing and not depend on unnecessary fields
- add i18n TODO for translating spreadsheet description
* Preserve cell data types
Fixes#2785
- integers and floats are sent as Doubles
- bools as Boolean
- DateTimes as Strings
- nulls as the empty string
- anything else as Strings using .toString()
* Fix LGTM-flagged potentially null pointer dereference