features/quota: Improvements to quota

Old implementation
* Client side implementation of quota
    - Not secured
    - Increased traffic in updating the ctx

New Implementation
* 2 stages of quota implementation is done: Soft and hard quota
    Upon reaching soft quota limit on the directory it logs and no more writes
    allowed after hard quota limit. Additionally the usage is logged @ 80, 90,
    95 percent of the hard limit.

* Quota is moved to server-side.
    Server side implementation secures the quota from mounting with
    modified volfile.

    There will be 2 quota xlators
    i. Quota Server
        It takes care of the enforcing the quota and maintains the context
        specific to the brick. Since this doesn't have the complete picture of
        the cluster, cluster wide usage is updated from the quota client. This
        updated context is saved and used for the enforcement.

        It updates its context by searching the QUOTA_UPDATE_KEY from the dict
        in the setxattr call.

    ii. Quota Client
        A new xlator introduced with this patch. Its a gluster client process
        with no mount point, started upon enabling quota or restarting the
        volume.

        It queries for the sizes on all the bricks, aggregates the size and
        sends back the updated size, periodically. It maintains 2 lists: one
        for usage above soft quota and other for below soft quota. The timeout
        between successive updation is configurable and typically/by default
        more for below-soft-quota-list and less for above-soft-quota-list.

        There will be 2 threads for each volume: one for above-soft-quota-list
        and one for below-soft-quota-list, to periodically trigger the get and
        setxattrs.

   Thus in the current implementation we'll have 2 quota xlators: one in server
   graph and one in trusted client of which the sole purpose will be to
   aggregate the quota size xattrs on all the bricks and send the same to
   server quota xlator.

* Changes in glusterd
   A single volfile is created for all the volumes, similar to nfs volfile.
   All files related to quota client (volfile, pid etc) are stored in
   GLUSTERD_DEFAULT_WORK_DIR/quota-client.

Change-Id: I16ec5be0c2faaf42b14034b9ccaf17796adef082
Signed-off-by: Varun Shastry <vshastry@redhat.com>
WIP: quota glusterd changes

Signed-off-by: Krutika Dhananjay <kdhananj@redhat.com>
WIP: quota cli changes

Signed-off-by: Krutika Dhananjay <kdhananj@redhat.com>
merge conflicts fix

Signed-off-by: Krutika Dhananjay <kdhananj@redhat.com>
Some more bug fixes

Signed-off-by: Krutika Dhananjay <kdhananj@redhat.com>