INT-3464 Exceptions and AcceptOnceFileListFilter

JIRA: https://jira.spring.io/browse/INT-3464

Previously, if an IO exeption occurred while synchronizing
files, and an AcceptOnceFileListFilter is being used, files that were
not transferred would not be fetched next time.

Add strategy `ReversibleFileListFilter` that can rollback previously
accepted files.

Implement this interface on `AcceptOnceFileListFilter` and
`AbstractPersistentAcceptOnceFileListFilter`.

Add test cases.

__cherry-pick to 4.0.x__
Because the only possible checked `Exception` is `IOException`. If we catch exception, we would have to test for `RuntimeException` or `IOException` and cast to rethrow; we'd also have to add `else` and wrap remaining exceptions in a `MessagingException`, even though we "know" that code will never be executed.

If/when we go to Java7 minimum, we can use `catch (RuntimeException | IOException e)`