Squashed commit of the following:

commit 633422044edb422c29cb9fdafda6d63fb6b03171
Author: Chris Beer <cabeer@stanford.edu>
Date:   Fri Apr 26 08:59:10 2013 -0400

    relax 1 key => 1 store requirement, but make moveValue smarter

commit 534cab9a9ad0e01141ffe4fa3df8575b9434d270
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 7f9926977de159541895aed4d291353300e04076
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 c04eef2c780761f9dc883a2ae84d8e902f613405
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 ed05a2f52f6d85ecd6128ee4879c99f4b259ccaa
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 4baccef3e13e034adb5311303460c87c155d79a7
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.
merge mode-1710