merge mode-1710
merge mode-1908
Squashed commit of the following:

commit 19dfbca04720666a9184d7b8de3b901170eae969
Author: Chris Beer <cabeer@stanford.edu>
Date:   Fri Apr 19 07:58:04 2013 -0700

    Create a CompositeBinaryStore that:

    - initializes any number of named BinaryStore instances
    - appear as a vanilla BinaryStore to existing code
    - allow consumers to offer a "StrategyHint" that MAY be used to
      determine what named BinaryStore to persist content to
    - on retrieval, look for the BinaryKey in all named BinaryStores

commit 2677c47cb93194be61fd20b692b1167d83b544ea
Author: Chris Beer <cabeer@stanford.edu>
Date:   Sun May 5 10:06:26 2013 -0700

    add collections helpers for concatenating iterators and iterables

commit 8f4b436dddaa71eedad571012562abc5483c85c4
Author: Chris Beer <cabeer@stanford.edu>
Date:   Tue Apr 23 14:11:17 2013 -0400

    add BinaryStore#hasKey, for checking if a key is in the store

commit 70666ac05958e61b0a465caafd465b8b56cffb32
Author: Chris Beer <cabeer@stanford.edu>
Date:   Fri Apr 19 09:42:35 2013 -0700

    relax JcrRepository's binaryStore to support any BinaryStore impl

commit 43964cb6a39b8aa3512f92fc09397d1fdab6685d
Author: Chris Beer <cabeer@stanford.edu>
Date:   Fri Apr 19 09:42:12 2013 -0700

    move start/shutdown methods from AbstractBinaryStore up to the BinaryStore interface

commit a28ca2a7d6f951ed96398b2c1fcf1f596c6e2bf1
Author: Chris Beer <cabeer@stanford.edu>
Date:   Fri Apr 19 09:41:52 2013 -0700

    remove checks in AbstractBinaryStoreTest that were beyond the BinaryStore contract.