Allow runtime change of the segments-to-merge calculation

The default calculation which determines the segments to merge is
easily skewed since it relies on the mean average.  This especially
hurts given automatic compaction is driven solely by buffer rollovers,
thus guarenteeing skew (because the new segments will always be much
smaller than old segments).

This change will allow a user to change the calculating function at
runtime.  This could be useful in production, allowing the ability to
swap in more agressive algorithms temporarily to help free up disk
space and memory.
Merge branch 'rz-parameterized-compaction' of git://github.com/basho/merge_index into HEAD
Added staleness metrics into segment selection code
Patch to use replacable functions for compaction

Also adds a staleness driven function that might mitigate current
issues with some files not being compacted.
Keep mtime in seg record, simplify, add test

* Keep the mtime in the segment record.  Segments are immutable files
  and this makes it easier to write tests.

* Allow only 2 time scalars, minutes and hours.  Seconds is too fine
  and days can easily be done my multiplying hours.  Less combinations
  means less to break.

* Add test to verify the average + stale check works.

* Set default to 1 hour to amortize the cost rather than build up
  large segments.

* Do strict checking of the app-env value to prevent user typos from
  crashing merge index.
Bump version
Merge branch 'master' into cv-3717-patch

Conflicts:
	src/merge_index.app.src
Add verbose eunit
Include eunit after EQC to avoid macro redef
Don't compact on empty segment list

If there are no segments there is nothing to compact.  This issue was
hit during EQC test and could happen if user invoked manual compaction
before any segments existed.
Only compact if there are segments to compact

Don't needlessly write a new segment if there were no segments to
compact in the first place.  This was an error caught by the EQC
tests.
Remove drop call from EQC test

The drop call causes occasional errors with the EQC test.  I'm
removing it because the EQC test does not model how Riak Search uses
the drop call.  Which is only done after a handoff has finished.  It
would be nice to find and fix the race condition that exists between
drop and the other operations but for now I just want a consistent
test.
Use the `git` vsn in .app file

Stop relying on human to bump the version number.  It should be unique
for every commit.
Merge pull request #27 from basho/cv-3717-patch

Cv 3717 patch
Standardize on a rebar.config dep format to reduce conflicts
Merge branch '1.3' into develop

Conflicts:
	rebar.config
Fix rebar.config url to stay consistent
Bump lager dep to 2.0.2
Bump lager dep to 2.0.3
dict instead of list to update file locks