ErasureCodeJerasure: import jerasure-1.2A

The files are copied verbatim from
http://web.eecs.utk.edu/~plank/plank/papers/Jerasure-1.2A.tar and a
section is added to the top level COPYING file to reflect the BSD
license.

https://github.com/dachary/ceph/tree/wip-5879 refs #5879

Signed-off-by: Loic Dachary <loic@dachary.org>
ErasureCodeJerasure: fix jerasure compilation

Add the imported jerasure-1.2A to the Makefile.am and fix the
compilation warnings.

https://github.com/dachary/ceph/tree/wip-5879 refs #5879

Signed-off-by: Loic Dachary <loic@dachary.org>
ErasureCodeJerasure: derive ErasureCodeInterface for each technique

Each encoding technique is implemented as derived class of
ErasureCodeInterface, based on the code found in
Examples/{encode,decode}.c. In the following derivation tree,
each class is matched with the technique string used in the original
Jerasure-1.2A {encoder,decoder}.c source files to select them.

   ErasureCodeInterface (abstract)
   |
   -> ErasureCodeJerasure (abstract)
      |
      -> ErasureCodeJerasureReedSolomonVandermonde
         | == reed_sol_van
      -> ErasureCodeJerasureReedSolomonRAID6
         | == reed_sol_r6_op
      -> ErasureCodeJerasureCauchy (abstract)
      |  |
      |  -> ErasureCodeJerasureCauchyOrig
      |     | == cauchy_orig
      |  -> ErasureCodeJerasureCauchyGood
      |     | == cauchy_good
      -> ErasureCodeJerasureLiberation
         | == liberation
         |
         -> ErasureCodeJerasureBlaumRoth
            | == blaum_roth
         -> ErasureCodeJerasureLiber8tion
            | == liber8tion

The ErasureCodeJerasure base class contains the data members common to
all techniques ( k, m and w ) as well as the encode/decode functions
that convert the bufferlists commonly used by Ceph into arrays of chars or
integers prefered by jerasure.

The associated unit tests are common to all techniques and use a
configuration that is the least common demoninator between them ( k =
2, m = 2, w = 7 and packetsize = 8 ).

https://github.com/dachary/ceph/tree/wip-5879 refs #5879

Signed-off-by: Loic Dachary <loic@dachary.org>
ErasureCodeJerasure: plugin

Create the class matching the string found in the
erasure-code-technique parameter, using the same strings are the
original {encoder,decoder}.c examples from Jerasure-1.2A. Registers
the plugin in ErasureCodePluginRegistry.

https://github.com/dachary/ceph/tree/wip-5879 refs #5879

Signed-off-by: Loic Dachary <loic@dachary.org>