MODE-2302 Updated the BinaryStore API with a "markAsUsed" method which is now used during WritableSessionCache#save methods. Also, moved the entire logic of marking binary values used/unused inside a tx synchronizer.
MODE-2302 Changed the default behavior of storing binary properties: up until now, when a binary property was created the BinaryValue would be stored into the BinaryStore as a "used" value immediately, regardless of what happens with the transaction. This is no longer the case, as the new behavior is to store the BinaryValue initially as "unused" and only on tx commit, based on the actual binary references count would the binary become "used". There is one exception to this rule and that is the Backup/Restore process which doesn't use the JCR layer and process binaries immediately (essentialy keeping the old behavior).
Numerous issues were found and corrected among existing binary stores implementations, chief among which being the fact that "getAllBinaryKeys" was not returning the keys of only the used binaries in all the stores.
MODE-2302 Changed the storage logic of the FileSystemBinaryStore to better support the used/unused state changes: binary values are always stored in the main persistence area and their used/unused state is reflected simply by the absence/presence of an empty file in the trash area, that has the SHA-1 (binary key) as name.
Merge pull request #1257 from hchiorean/MODE-2302

MODE-2302 Changed some of the logic behind the interaction of the repository and the binary stores