Add riak_test for 781
EQC properties for listing all objects

- Two EQC properties for listing objects (GET Bucket),
  one without delimiter and one with delimiter "/".
  Those properties assert following two are equal:
  1. keys from listing objects by repetitive usage of
     riak_cs_list_objects_fsm_v2
  2. active keys from generated [{State, Key},...]

- When counterexample is found, states and keys are
  written to file $PWD/.riak_cs_list_objects_fsm_v2_eqc.txt.
  Each line consists of line number, status and key.
  Example output:

    1,active,0123456/10
    2,scheduled_delete,0123456/1000

- To generate manifests, generator of whole manifests is avoided
  and generate only states and keys of manifests.
  The property list-all-objects generates several thousands of nested tuples,
  #lfs_manifest_v3 and #acl_v2 in this case.
  But generators of nested tuples seem not so fast.

TODOs remaining
- prefix of request parameter
- non-default max-keys
Smaller EQC test constants

Clean up the list objects EQC test and start threading the 2i request
page size through spawn_link of the FSM. This allows us to test with
constants far below 1002. 1002 is a nice size for production 2i queries,
but is terrible for getting good shrinks out of QuickCheck.
Fix list objects v2 bug

Don't slice the result-set until `enough_results` has been determined.
NextMarker support

Update the list objects FSM and EQC test to support the 'NextMarker' XML
node. This is used when a `delimiter` is included in a request. The
client uses this node to page through the next request, as opposed to
simply using the last `Key` in the contents.
Refactor
Add flavor for prefix generator
Fix list objects edge-case

Only use the `skip_past_prefix_and_delimiter` trick if the common
delimiter is already in the result-set. It will _not_ be in the
result-set if the sole object which 'created' it is not in the `active`
state.
Update .gitignore
Update type specification
Refactor repeated expression
Add docstring and type specification
Merge pull request #788 from basho/feature/list-objects-eqc-addition-squashed-reid-squashed

List objects FSM v2 bugfix and tests
Handle well-indented XML including comments

The root cause for #782 was misuse of xmerl_scan:string/2,
which doesn't emit spaces, comments between actual xml elements.
It leaves them as #xmlText{} and #xmlComment{} - This commit
changes to ignore them at walking around parsed dom tree. This
diffset also includes a small refactoring that wraps all
xmerl_scan:string/2 to one riak_cs_xml funcsion to control its
usage.

This also adds regression test as simple eunit test case.

Conflicts:
	src/riak_cs_acl_utils.erl
	src/riak_cs_s3_response.erl
Improve access log handler to handle HEAD method.
- Fix access_log_handler to filter out ByteOut on Head request.
bump erlcloud version to 0.4.4
Merge pull request #791 from basho/bugfix/handling-head-request-on-access-log-handler

Improve access log handler to handle HEAD method.
Merge pull request #795 from basho/bugfix/gh782-acl-xml-format-1.4

Handle well-indented XML including comments
Performance optimization for object listing requests using a prefix

* Use prefix in start key calculation when appropriate to avoid
  iterating over unnecessary keys that lexicographically sort less
  than the prefix. The make_start_key_from_marker function in
  riak_cs_list_objects_fsm_v2 is renamed to
  make_start_key_from_marker_and_prefix.
* Terminate processing early when a prefix is specified and a key is
  reached that lexicographically sorts greater than the prefix, but
  does not begin with the prefix. The results come back in sorted key
  order so it can be assumed that once any keys that begin with the
  prefix are processed it is appropriate to cease processing without
  requesting any more data. This is accomplished by the addition of
  the reached_end-of_keyspace/4 function to the
  riak_cs_list_objects_fsm_v2 module.
* Silence extraneous console logging in riak_cs_list_objects_fsm_v2_eqc test
Since this FSM has no timeout and the remote index FSM has no timeout
by default, we can get stuck with both FSMs partially completed and
holding on to a lot of memory.

This fix adds a timeout to the remote FSM so it should terminate in a
timely fashion, but adds a timeout to the connection request, just in
case the other end stops talking to us for some reason.