Search Changes 8 - Index fields with correct type in ElasticSearch

Previously, everything was converted to a string before indexing in ElasticSearch.
This caused issues where certain filters may not work as expected (such as a greater than filter on an integer field)

This commit changes this by adding type detection and conversion into the ElasticSearch backend.