Squashed 'ext/gf-complete/' content from commit 49de7d6

git-subtree-dir: ext/gf-complete
git-subtree-split: 49de7d6903a6173d87e3d2087887f8c26e48699c
Merge commit '732b334d1edc128df2c82a79c47b6f04d26e7324' as 'ext/gf-complete'
Squashed 'ext/jerasure/' content from commit 0b20bd4

git-subtree-dir: ext/jerasure
git-subtree-split: 0b20bd4be41b87d695bc0b250da4d7f5ff4e26c2
Merge commit '88eb5de2c2b4a0317317941b9c7b1d0f8b14dd73' as 'ext/jerasure'
Jerasure: generate and commit configure file to remove dependency on autoconf.
Top level cmake: build gf-complete and jerasure as external projects.
Jerasure: run autoconf and commit results.
Gf complete: add missing sizeof long check to autoconf.
Gf complete: generate new configure with the last autoconf configuration fix.
Top level cmake: Turn off by default with 2.8.5 < cmake < 2.9.0 to work around cmake28 and boost libraries problem on centos 6. Boost_NO_BOOST_CMAKE was introduced int cmake 2.8.6. Make external gf complete and jerasure external projects build with empty kfs directory prefix.
Common library: add definitions for stripe and recovery stripe fields bit count, and max number of stripes and recovery stripes. Add new jerasure RS striper type.
Meta server: use common library stripe count bit count definitions with file attribute. Add validation of for for jerasure striper type.
Client library: change RSStriper to work with any number of recovery stripes in the range from 0 to max. recovery stripes count.
Top level make file: keep top level make file as simple as possible, with no assumption that the make file is gnu make, by removing crept in gnu make specific code.
Jerasure: add ACLOCAL_AMFLAGS = -I m4. Re-generate configure.
Jerasure: disable maintainer mode to allow to build without autoconf.
Jerasure: re-generate configure and make by running autoreconf --force --install.
Client library: design and implement plugable erasure coding interface: ECMethod to facilitate use of different erasure codes with QFS. Create QCRSMethod for original Quantqast RS encoding. Create jerasure stub, and define jerasure method id. Move relevant stripe parameters validation into the erasure code methods.
Meta server: make stripe parameters validation more flexible, do not assume qcrs striping.
Chunk server: change recovery parameters validation to be flexible, by not assuming qcrs recovery.
Chunk server: shutdown client threads at the beginning of the chunk manager shutdown, and then invoke client threads shutdown again, immediately before disk io shutdown to ensure that all pending queues are properly flushed during graceful shutdown.
Chunk server: change replicator trace message level to debug, in the case of successful replication completion, to just leave the final replication completion message at the notice level.
Top level cmake: install jerasure and gf-complete libraries in the same destination ast the other kfs libraries. Set static and shared libraries location variables to simplify referencing the libraries from cmake files in sub directories.
Client library: add dependencies to jerasure external project. Link client library against jerasure and gf-complete libraries.
Client library: remove indirect extraneous mutex acquisition in ECMethod::Find() method, by creating InitAllSelf() method that does not acquire the mutex. Acquire mutex in the InitAll() method before invoking InitAllSelf() method to serialize initialization and access to the count variable.
Top level cmake: change shared libraries install file name pattern to allow version suffix following shared library suffix. Change warning messages to status messages with word "WARNING" in them to avoid cmake stack trace display with cmake 3.0.