Refactor insert to normal and bulk

There are completely different rules for how to insert a list of documents in the context of a bulk operation and non-bulk operation.
This is a refactor of insert into bulk_insert and normal insert (which can still be a list of documents however)