Stop all yokozuna supervisors rather than crash full node
Add ability to enabled/disable components

This is actually a rename of the `noop_flag` API.

* Add a `component()` type that enumerates the components that may be
  enabled or disabled.

* Add functions to the `yokozuna` module to enabled/disable components
  and check if a component is enabled.

* By default a component is considered enabled.

* Honor the search enabled flag in the protobuff search path.

* Add better code documentation and specs.
Remove trap exit and let the node crash
set java.awt.headless to prevent Mac dock icons

Java 1.6 on Mac will add an icon to the dock and app switcher for each
JVM running. When the VM starts, this "app" comes to the foreground and
steals focus.

Setting "-Djava.awt.headless=true" runs the VM in headless mode, so it
does not connect to the windowing server, and thus does not create these
artifacts.
Merge pull request #148 from branch 'bwf-headless'
return ordset from flagged_buckets, because yz_misc:delta expects it

The list produced by riak_core_bucket:get_buckets/1 is not guaranteed to be
in order by bucket name, so we need to turn it into an ordset before sending
it to yz_misc:delta, which expects an ordset.
Merge pull request #149 from branch 'bwf-ordset'
Merge branch 'master' into er-port-in-use-crash
fix index/extractor ring modification timestamp conflicts

Before this change, if two index or extractor-map changes happened within
one second, one of the modifications may be lost. This is due to the
1-second resolution in the ring's meta_entry records.

This commit solves the issue in two ways:

1. Modifications are made inside the ring_trans call, to the ring passed
into the function. The had been made in an always-clobber manner before.

2. The function sleeps for one second to ensure that the update will have
a newer timestamp.

The second point is not the greatest because it blocks other calls to
the riak_core_ring_manager process for that second. Reads are not blocked,
since they look at an ETS table instead. An intermediate serialization+wait
process could be used instead if the temporary block causes major problems.
Check for undefined solr port process

The main purpose of this commit was to avoid calling
`proplists:get_value` on an undefined port (Erlang port, not socket).
This would happen when the Solr process has a non-zero exit,
e.g. because the specific socket port number is already bound.

Some additional fixes I made along the way:

* Move `getpid` function in API section where it belongs.

* Fix the exit status match in `handle_info`.

* Check for a regular port exit msg in `handle_info`.

* Only close the port in `terminate` if the pid is not `undefined`.
Move Solr proc server under yz_sup

Move the solr proc server under the yz_sup so that max restart
frequency will actually be reached and shutdown the Riak node.  The
thinking is that if Solr cannot run then Riak should shutdown to avoid
missing index data and other badness.  That is, better to have a
downed node than one that is partially up.
Merge pull request #136 from basho/er-port-in-use-crash

Fix various things in Solr startup
Fix src-pkg.sh script to use new branch
Merge pull request #151 from branch 'bwf-ring-trans'
Merge branch 'master' into rz-component-api
Fix typo and index check
monitor stdio instead of periodic ps shell script output

System.in.read() will throw an IOException or return -1 when the Erlang VM
or yz_solr_proc exits, because the Erlang port that handles stdio will close.
Rearrange check to be straightforward
Merge pull request #147 from basho/rz-component-api

Add ability to enabled/disable components
Clarification of JRE to use