Make terms facet accurate.

In light of this horrid default behavior:
http://www.elasticsearch.org/guide/en/elasticsearch/reference/current/search-facets-terms-facet.html#_accuracy_control

Looks like elasticsearch 1.0 handles this [a bit
better](http://www.elasticsearch.org/guide/en/elasticsearch/reference/current/search-aggregations-bucket-terms-aggregation.html#_size_amp_shard_size) anyways, with size defaulting to Integer.MAX_VALUE
@nickpell
set shard_size to max

so even size-limited queries are accurate
Added handling to make sure all rows have the same length.
Merge pull request #4670 from dimagi/facet-size

Make terms facet accurate.
Merge pull request #4629 from lwyszomi/143728-case

Added handling to make sure all rows have the same length.
linter fixes
Refactor custom product data saving
Re-add bit of code that was lost in merge commit?

We think this was lost in
https://github.com/dimagi/commcare-hq/commit/71b96457d8c826deec219b5258e2ed2c7346974d
but aren't super sure what happened.
Refactored product error message to use red box

Previously all messages showed up in happy green area, now users can
easily see they were bad and messed things up.
Update ES Faceting test
Merge pull request #4673 from dimagi/facet-size

Update ES Faceting test
support case sharing in case property autocomplete
update staging.yaml

[ci skip]
Merge remote-tracking branch 'origin/remove-hutch' into autostaging
Merge remote-tracking branch 'origin/hq-dropdown' into autostaging
Merge remote-tracking branch 'origin/subscription-no-contact-info' into autostaging
Merge remote-tracking branch 'origin/revert-4205-revert-3841-86347-2' into autostaging
Merge remote-tracking branch 'origin/reduce-location_' into autostaging
Merge remote-tracking branch 'origin/archive-location' into autostaging
Merge remote-tracking branch 'origin/help-text' into autostaging