EC: Add support for policy types, 'erasure_coding' policy

This patch extends the StoragePolicy class for non-replication storage
policies, the first one being "erasure coding".

Changes:

 - Add 'policy_type' support to base StoragePolicy class
 - Disallow direct instatiation of StoragePolicy class

 - Subclass StoragePolicy

   - "ReplicationStoragePolicy":
     . Replication policy, default
     . policy_type = 'replication'

   - "ECStoragePolicy":
     . Erasure Coding policy
     . policy_type = 'erasure_coding'
     . Private member variables
       ec_type (EC backend),
       ec_num_data_fragments (number of fragments original
         data split into after erasure coding operation),
       ec_num_parity_fragments (number of parity fragments
       generated during erasure coding)
     . Private methods
       EC specific metadata and ring validator methods.

 - Swift will use PyECLib, a Python Erasure Coding library,
   for erasure coding operations. This patch adds PyECLib to
   Swift requirements.txt. PyECLib is already an approved
   OpenStack core requirement.
   (https://bitbucket.org/kmgreen2/pyeclib/)

 - Add test cases for
   - 'policy_type' StoragePolicy member
   - policy_type == 'erasure_coding'

 - Make default policy type for StoragePolicy tests cases
   'ReplicationStoragePolicy'

DocImpact

Implements: blueprint ec-proxy-work
Change-Id: I605719bd9ab26b36310a06dbf518efc69ba41172