bulk_upsert operates on models rather than dictionaries

@jmcriffey mcriffey I made the bulk_upsert function take models instead of dictionaries to be more consistent with the other functions