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
Add basic join interface to API

At the moment use a hard coded list of possible joins along with the
internal instructions on how to do them. Only does one document at a
time and one level of join.
cope with joins up to depth 3 on persons and organizations

Populates the person or organization memberships of a returned
item in a collection. Limited to depth 3 as it probably doesn't
make sense to go deeper.
allow collection query to be limited to basic information

i.e. skip the population of the memberships which significantly cuts
down the size of the returned data if that's all you want.