(ReindexAll) Added principals reindex-all

Complete:
* SearchAPI methods to register handlers
* Generic "iterateAll" helper in cassandra.js
* Principals and content reindex-all handler
* Preview Processor "reprocessPreviews" task and handler
* Global admin REST endpoint to trigger reindex and reprocess previews
* Unit tests

Tested VIA the UI by doing the following:

1. Load data using the model loader, let the previews all generate
2. Follow this script to destroy the search index and all the preview statuses (note the manual instructions for blowing away preview status):

```bash
#!/bin/sh

ADMIN_HOST="127.0.0.1"
TENANT_HOST="localhost"

# Delete all search resources
curl -XDELETE 'http://localhost:9200/oae/_query' -d '{
    "terms" : { "resourceType" : ["group", "content", "user"] }
}'

# You'll have to manually destroy your preview statuses in cassandra
#  1. Use cqlsh to query: select contentId from Content;
#  2. Using the list of contentIds, use regex/replace in your favourite editor to create a delete query: delete previews from Content where contentId in (<csv content ids>)
#  3. Execute the delete query
#

ADMIN_COOKIE=$(curl -s --cookie-jar - -d"username=administrator" -d"password=administrator" http://${ADMIN_HOST}/api/auth/login | grep connect.sid | cut -f 7)

curl -XPOST --cookie connect.sid=${ADMIN_COOKIE} http://${ADMIN_HOST}/api/search/reindexAll
curl -XPOST --cookie connect.sid=${ADMIN_COOKIE} http://${ADMIN_HOST}/api/content/reprocessPreviews
```

3. The 2 posts at the end trigger the reindexing and reprocessing
4. Look at logs, see goodness
5. Verify general search, library search, memberships search, etc..