ensure JSON custom properties make their way to SolR
cache fields_get to avoid re-doing it on any record
large refactoring: simplified code with generic classes; optimized Solr connection to upload several records and don't commit after each record unless asked specifcally