Create ACLs from specific-grant headers

Previously, ACLs could only be set via canned-ACL headers, or through
the XML document PUT to the ?acl subresource. S3 also supports ACLs
being set through non-canned ACL headers, like `x-amz-grant-read` and
`x-amz-grant-write`. The specifics of the syntax are described in each
of the resources, like in [PUT
Bucket](http://docs.aws.amazon.com/AmazonS3/latest/API/RESTBucketPUT.html).
More information on ACLs can also be found on the [ACL
Overview](http://docs.aws.amazon.com/AmazonS3/latest/dev/ACLOverview.html).
With this change, there are now three ways to specify an ACL for a
bucket or object:

1. a canned-ACL header
2. specific ACL-grants in the headers
3. an XML document PUT to the ACL subresource

Only _one_ of these can be provided on a given request. HTTP 400 will be
returned if the user provides more than one of these ACLs, with an error
message equivalent to what S3 provides. This change applies to the
following resources:

* riak_cs_wm_object
* riak_cs_wm_object_acl
* riak_cs_wm_bucket
* riak_cs_wm_bucket_acl
* riak_cs_wm_object_upload (initiate multi-part upload)

The following lists several other notable changes:

* Along the way, this commit also fixes a bug in
 `riak_cs_acl_utils:add_grant/2`:

 `lists:splitwith` only splits on the first occurrence. `lists:partition`
 provides the expected behavior here. An EQC test has been added.

* Remove unused record field

 This record is never persisted, to changing the field would only matter
 for live-code changes, which we tend not to do.

* Add riak_test and tests to both the Clojure and Python test suites.
Export all functions only during test compilation
Fix type specification

Fixes dialyzer error
Add missing test to suite description

The test was written, and passing, but it wasn't being run because it
wasn't in the test suite description.
Fix wonky indentation
Fix function boundary-case

Prevent starts_and_ends_with_quotes from raising an exception by calling
`hd` on an empty list. Further, ensure at least one character could be
between the quotes.
Add missing test to riak_test suite

This test was previously written, but just not run
Fix further conflicts from #761