Refactor DataPersistenceProviders and RaftActor#persistence
Refactored protected DataPersistenceProvider inner class impls to new
files for reuse in unit tests and to reduce inner code.
Also modified RaftActor so the DataPersistenceProvider is set rather
than having derived classes provide via the persistence() abstract method.
This makes it a little easier for derived RaftActors in that they don't
have to maintain a field and easier for unit tests to change the
DataPersistenceProvider impl.
Added a DelegatingPersistentDataProvider that holds the actual impl for
RaftActor. This allows the DataPersistenceProvider to be passed to
internal helper classes without having to update them if the underlyting
impl is changed.
These changes will facilitate further refactoring of code in RaftActor
into separate classes to simplify it.
Change-Id: I520b0d83635356f195e6bff33e44ac8f49e793cf
Signed-off-by: Tom Pantelis <tpanteli@brocade.com>