Squashed commit of the following:

commit 8c629959135715337e7caf809ee2e7e7d1677755
Author: fasseg <frank.asseg@googlemail.com>
Date:   Fri Apr 26 12:49:16 2013 +0200

    made use of the already available CountDownLatch in the TestListener

commit 2a977281ecfc3e2d8252ed48e5d8bc5cf1750a70
Author: fasseg <frank.asseg@googlemail.com>
Date:   Fri Apr 26 11:46:16 2013 +0200

    added synchronized block around Thread.sleep

commit ce9eaa65fe0a99b9381d491c004c6854ca505cdc
Author: fasseg <frank.asseg@googlemail.com>
Date:   Thu Apr 25 14:11:28 2013 +0200

    changed TestListener to use RecordingCanges and added a retry mechanims to give the veent time to propagate

commit 063c84b23dbedad0d2f0ab53ecd79fba2a66db47
Author: fasseg <frank.asseg@googlemail.com>
Date:   Thu Apr 25 13:41:48 2013 +0200

    added creation of repo directory to mode-1710 test

commit 5478dde35cb8704079e9215ff55fddd79366ed50
Author: ajs6f <ajs6f@virginia.edu>
Date:   Wed Apr 17 10:56:21 2013 -0400

    Added simple integration test

commit fa493d6b663ca610cc22d58cd0ea608874ec5810
Author: ajs6f <ajs6f@virginia.edu>
Date:   Tue Apr 16 15:09:49 2013 -0400

    More Javadocs

commit 91977db21d8aa162494f26160f4ba1acacb09d50
Author: ajs6f <ajs6f@virginia.edu>
Date:   Tue Apr 16 13:23:12 2013 -0400

    Added and connected factory machinery

commit 06bcd8397c67daf0f015b986f5669ed4d7c17c74
Author: ajs6f <ajs6f@virginia.edu>
Date:   Mon Apr 15 17:09:12 2013 -0400

    Removed nodeChanged() method

commit 2886c761fa816b3b7b4d24a9ffa03b5ef49fca3f
Author: ajs6f <ajs6f@virginia.edu>
Date:   Mon Apr 15 17:06:43 2013 -0400

    Renamed contract, added explanatory comments

commit 17b5c5eef40059f206723707cb5c7e23b13f831a
Author: ajs6f <ajs6f@virginia.edu>
Date:   Mon Apr 15 16:55:51 2013 -0400

    Strawman contract for review by MODE folks
Squashed commit of the following:

commit 38fc83b4d5a0fe6d793d9b5277ffbbad904403ba
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 b0e37cace435d0ac5902ee389f1bb631aeeb6e59
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.