This commit improves saving of sessions to only execute save operation if something has been changed (e.g. session.setAttribute(String, Object) was called). Further, configurable flush mode that specifies when to write to the backing Hazelcast instance is introduced. It can be 'on save' (default) or 'immediate'. Fixes gh-516, fixes gh-641