Delete the elasticsearch index before reindexing

If we don't do this then there might be stray documents that are no
longer in the database, so we get inconsistent results.
Check index exists before dropping
Only drop the index once before reindexing
Fix model reference in reIndex method
Pass reindex error to correct callback
use bulk api for reindexing memberships

this improves the performance for objects that have a large number of
memberships