Adds ConditionalStoreMutation

Extention of the Mutation interface and modification of StoreObject
to allow for a store operation not to occur if the object the
Mutation is being applied to is not modified

Contributed via #200 but needed Javadoc and seperation from other
modifications.