Add chef_index_expand to flatten/expand and POST to Solr

The module allows us to process Chef objects in the
same way as the chef-expander code does, but now we can POST to Solr
directly.

The module also enables a bulk POST mode (not yet tested against Solr)
that should allow us to index or delete multiple objects using a
single HTTP request. For migration or re-indexing purposes this should
be a big improvement as we could easily reduce the number of HTTP
calls by 10x.
Capture key path as part of flatten/expand

Match the Ruby implementation to capture all steps of a key path as
KEY_HEAD__=__KEY_LAST.
XML escape quote character to match Ruby implementation

The Ruby implementation escapes `"` as `&quot;` so we need to do the
same. Note that this makes for some strange semantics if you have
embedded quotes and want to later search for them, you will need to
use the entity code in the search query.
Match behavior of Ruby implementation for embedded null values.

The Ruby implementation parses the null values in JSON to nil values
in Ruby which then end up as empty string when put into a format
string.

I'm not sure if our query transformation provides for a way to
generate a valid query. Arguably indexing the null value using the
string "null" might make for a better setup.

Conflicts:
	test/chef_index_expand_tests.erl
Improve floating point formatting to align better with Ruby

Floating point formatting in JSON may be difficult to match exactly.
This seems to get us closer to matching the behavior of the
chef-expander code.
Ignore generated files in test dir
Add meta fields to content to match chef-expander behavior

The Ruby based chef-expander adds db, id, and type values to the
content field. Pretty sure the system does not rely on this and that
no user is either. But in the interest of full backwards compat for
now, this makes the results match.
Add notes and scripts for correctness testing against chef-expander