EC: Add 'erasure_coding' policy type, PyEClib dependency

This patch adds support for a new policy type called
'erasure_coding' to lay the groundwork required to
support Erasure Codes in Swift.

Changes:

 - Policy config changes
   - New policy type 'erasure_coding'
   - Add:
     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 redundant parity
         fragments generated during erasure coding)

 - Subclass StoragePolicy into ECStoragePolicy and
   ReplicationStoragePolicy.

 - ECStoragePolicy holds EC specific metadata and ring
   validator methods.

Implements: blueprint ec-proxy-work
Change-Id: Id79eb337176462b43a116812117fb569f4dbe868
EC: Make quorum_size() specific to a storage policy

quorum size ie, the number of successful backend operations
needed for the proxy to consider the client request
serviceable or successful depends on the policy type now.
For 'replication' policies, it is a function of the number
of object replicas configured, whereas for 'erasure_coding'
policies, it is a function of the number of fragments which
is also the number of nodes that the original data was split
across.

This patch makes quorum_size() private to ECStoragePolicy
and ReplicationStoragePolicy classes.

Changes:

 - Move quorum_size() from utils to *StoragePolicy
 - Update callers of quorum_size() to reflect this change
 - Add quorum_size() unit test code taking policy_type
   into account

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