Reduce TIME-WAIT load

A combination of ibrowse's inefficient load balancing algorithm and
default socket inactivity timeout of 10 seconds can cause TIME-WAIT
load.  It becomes worse as the pool size of pipeline sizes are
increased.  This patch is a temporary workaround to reduce socket
churn and thus TIME-WAIT load.  It does so by increasing the
inactivity timeout to 600 seconds across the board.  Below is a chart
of showing the amount of socket churn in connections per minute for
the different timeout values both at idle and while under load from
basho bench.  These numbers were calculated by a DTrace script which
counted the number of new connections being accepted on port 8093.

| Timeout | Socket Churn At Idle | Socket Churn Under Load |
|---------|----------------------|-------------------------|
| 10s     | ~59 conns/min        | ~29 conns/min           |
| 600s    | ~9 conns/min         | ~6 conns/min            |

The timeout is set via application env because ibrowse has the
absolute most complex configuration management code I have ever seen
and this was the easiest way to make sure the timeout is set
correctly.  This is just a workaround until after 2.0 when other HTTP
clients and pools may be tested.  ibrowse seems to have many issues,
this is but just one.

For more background see the following issues:

https://github.com/basho/yokozuna/issues/367
https://github.com/basho/yokozuna/pull/358
https://github.com/basho/yokozuna/issues/330
https://github.com/basho/yokozuna/issues/320
Constrain index names to ASCII so we do not create latin-1/UTF-8 conflicts down the road
Index names are converted to binary much earlier in the process, so we must convert them back to a list before running dropwhile
Reject characters below whitespace per @coderoshi
Add index name verification test from @coderoshi
Fix deletion for many-to-one indexing

It is possible to point multiple types and buckets to the same index.
The object key alone is not a unique identifier as the same key could
be repeated across types and buckets.

This patch fixes the deletion code to delete on the actual unique key
which is type + bucket + key.  Other changes made include:

* Expand the essential test to verify deletion and sibling cleanup
  work correctly when using the same key across multiple types and
  buckets.  Add unicode and special chars to additional verification.

* Update the AAE test to to pass the full key when making remote call
  to `yz_solr:delete`.

* Use the ?DEFAULT_TYPE macro in case the default type is changed
  before 2.0.0.

* Change `yz_rt:random_keys` to return binary keys.

* Handle legacy objects (pre 2.0.0) in `encode_delete`.

* Make sure to pass the lager transform when compiling the Yokozuna
  driver and make the `build_bb_driver` function more robust in
  general.
Merge pull request #375 from basho/rz/time-wait-load

Reduce TIME-WAIT load

Reviewed-by: coderoshi
Merge pull request #385 from basho/bugfix/376

Fix deletion for many-to-one indexing

Reviewed-by: coderoshi
Fix sort param in `search_fold` to guarantee unique values

The sort parameter must be type/bucket/key, as described in issue
duplicate values.  Other modifications include:

* Make sure to pass the new accumulator after calling `F` in
  `search_fold/9`.

* Increase the page size to 100 so less HTTP requests are made.  This
  should result in lower latency.

* Modify `yz_mapreduce` to use 1000 keys so since the page size was
  increased to 100.

* Add a test case to `yz_mapreduce` to verify that all 1000 unique
  results are returned.

* Add `yz_rt:load_module/2` to be used for loading a module's BEAM
  onto a set of nodes.  This is needed by the new test to have the HOF
  passed to `search_fold` available on the server process.
Add JSON Object Value Generator

Add `json_obj_valgen` to the Yokozuna BB driver. I used this to test
indexing "large" JSON objects while investigating #358.  The config
line to use this value generator looks like so:

```
{value_generator, {function, yz_driver, json_obj_valgen,
[<NumFields>]}}.
```

This will generate a static JSON object (i.e. generated once at start
up) which contains `<NumFields>` integer fields.  All workers will
index the identical object.  Here is an example config from one of my
testing runs:

```
{mode, max}.
{concurrent, 32}.
{driver, yz_driver}.
{code_paths, ["/root/work/yz-bb/misc/bench"]}.
{secure, false}.
{bucket, {<<"data">>, <<"largeobj">>}}.
{index, <<"largeobj">>}.
{pb_conns, [{"10.0.1.201", 8087}]}.
{http_conns, []}.
{duration, infinity}.
{key_generator, {to_binstr, "~B", {partitioned_sequential_int, 0,
1000}}}.
{value_generator, {function, yz_driver, json_obj_valgen, [4000]}}.
{operations, [{load_pb, 1}]}.
```

This uses 32 workers to write the same JSON object containing 4000
integer fields over the key space 0 to 999.
Merge pull request #381 from basho/jrd-ascii-indexes

Constrain index names to ASCII to duck latin-1/UTF-8 conflicts

Reviewed-by: coderoshi
Update invalid_name msg in PB index create

Recently there was a change to only allow ASCII chars in the index name.
This updates the PB interface error message when an index name is
invalid.  The HTTP resource was already updated in the original commit
bb44381.
Merge pull request #368 from basho/rz/bb-json-obj

Add JSON Object Value Generator

Reviewed-by: lordnull
Hide solr path under internal_solr
Merge pull request #386 from basho/bugfix/356

Fix sort param in `search_fold` to guarantee unique values

Reviewed-by: coderoshi
Merge pull request #390 from basho/bugfix/update-pb-msg

Update invalid_name msg in PB index create

Reviewed-by: coderoshi
Merge pull request #388 from basho/feature/er/hide-update-handler

Hide solr path under internal_solr

Reviewed-by: rzezeski
Verify _yz fields are not multivalued

The _yz fields should never be multivalued.  Prevent users from
storing schemas that declare them as such.
Change `/search/Index` to `/search/query/Index`

The routes for querying and index administration are ambiguous if
there is an index named `index`.  The user will not be able to query
because Yokozuna will interpret `GET /search/index?q=...` as a request
to the index admin resource.  This commit changes the query resource
to `/search/query/Index` so there is no ambiguity.
Merge pull request #393 from basho/bugfix/211

Verify _yz fields are not multivalued

Reviewed-by: coderoshi