core: cleanup related to memory state removal

1. changed MemoryImageRemover#isMemoryStateRemovable method not to be
abstract, but to have a default check that checks that the memory state
representation is not empty
2. Reduce the visibility of MemoryImageRemover#removeMemoryVolumes to
'protected' as it shouldn't be invoked by external classes. subclasses
expose API that use it behind the scenes
3. Snapshot manager now uses MemoryUtils#getMemoryVolumesFromSnapshots
instead of having duplicated logic

Change-Id: I30f400400eb8233a61c4a9cef54c7a8844255b38
Signed-off-by: Arik Hadas <ahadas@redhat.com>