Repository: javers/javers
Issue: JaVers dependency on Google Guava

As documented I just ran the below code to view the diff. It seems that Google Guava is required as a runtime dependency for the below code to work.

```java
Javers javers = JaversBuilder.javers().build();
Person tommyOld = new Person("tommy", "Tommy Smart");
Person tommyNew = new Person("tommy", "Tommy C. Smart");

Diff diff = javers.compare(tommyOld, tommyNew);
System.out.println(diff.prettyPrint());
```
The code above throws an exception as shown below:

```
Exception in thread "main" java.lang.NoClassDefFoundError: com/google/common/collect/ImmutableMap
	at org.javers.core.Changes.<init>(Changes.java:35)
	at org.javers.core.diff.Diff.groupByObject(Diff.java:88)
	at org.javers.core.diff.Diff.toString(Diff.java:129)
	at org.javers.core.diff.Diff.prettyPrint(Diff.java:120)
	...
Caused by: java.lang.ClassNotFoundException: com.google.common.collect.ImmutableMap
	at java.net.URLClassLoader.findClass(URLClassLoader.java:381)
	at java.lang.ClassLoader.loadClass(ClassLoader.java:424)
	at sun.misc.Launcher$AppClassLoader.loadClass(Launcher.java:349)
	at java.lang.ClassLoader.loadClass(ClassLoader.java:357)
	... 5 more
```

Not sure how the below line of code is used in [org.javers.core.Changes.java](https://github.com/javers/javers/blob/d5ac085c94b5459d464a14ab3e489f31e3c7c110/javers-core/src/main/java/org/javers/core/Changes.java#L35)
There are 3 more references in other classes HibernateConfig.java, JaversSpringJpaApplicationConfig.java and JaversSpringMongoApplicationConfig.java

The above code can be easily replaced with standard Java code to remove dependency on Goolge Guava.

Do let me know if these changes can be done. I will submit a PR.

Changed files:
javers-spring-jpa/src/test/java/org/javers/hibernate/integration/config/HibernateConfig.java
javers-spring-jpa/src/test/java/org/javers/spring/example/JaversSpringJpaApplicationConfig.java
javers-core/src/main/java/org/javers/core/Changes.java
javers-spring/src/test/java/org/javers/spring/example/JaversSpringMongoApplicationConfig.java

diff --git a/javers-core/src/main/java/org/javers/core/Changes.java b/javers-core/src/main/java/org/javers/core/Changes.java
index 2496ae6c..8cf726a8 100644
--- a/javers-core/src/main/java/org/javers/core/Changes.java
+++ b/javers-core/src/main/java/org/javers/core/Changes.java
@@ -1,6 +1,5 @@
 package org.javers.core;
 
-import com.google.common.collect.ImmutableMap;
 import org.javers.common.string.PrettyValuePrinter;
 import org.javers.common.validation.Validate;
 import org.javers.core.commit.CommitMetadata;
@@ -31,9 +30,6 @@ public class Changes extends AbstractList<Change> {
     private final transient PrettyValuePrinter valuePrinter;
 
     public Changes(List<Change> changes, PrettyValuePrinter valuePrinter) {
-
-        Map<String, String> string = ImmutableMap.of("a", "b", "c", "d");
-
         Validate.argumentsAreNotNull(changes, valuePrinter);
         this.changes = changes;
         this.valuePrinter = valuePrinter;
diff --git a/javers-spring-jpa/src/test/java/org/javers/hibernate/integration/config/HibernateConfig.java b/javers-spring-jpa/src/test/java/org/javers/hibernate/integration/config/HibernateConfig.java
index 515b0d8f..9fb95836 100644
--- a/javers-spring-jpa/src/test/java/org/javers/hibernate/integration/config/HibernateConfig.java
+++ b/javers-spring-jpa/src/test/java/org/javers/hibernate/integration/config/HibernateConfig.java
@@ -1,6 +1,5 @@
 package org.javers.hibernate.integration.config;
 
-import com.google.common.collect.ImmutableMap;
 import org.javers.core.Javers;
 import org.javers.repository.sql.ConnectionProvider;
 import org.javers.repository.sql.JaversSqlRepository;
@@ -20,6 +19,8 @@ import org.springframework.orm.jpa.vendor.HibernateJpaVendorAdapter;
 import org.springframework.transaction.PlatformTransactionManager;
 import javax.persistence.EntityManagerFactory;
 import javax.sql.DataSource;
+import java.util.Collections;
+import java.util.HashMap;
 import java.util.Map;
 import java.util.Properties;
 
@@ -98,12 +99,9 @@ public class HibernateConfig {
 
     @Bean
     public CommitPropertiesProvider commitPropertiesProvider() {
-        return new CommitPropertiesProvider() {
-            @Override
-            public Map<String, String> provide() {
-                return ImmutableMap.of("key", "ok");
-            }
-        };
+        final Map<String, String> rv = new HashMap<>();
+        rv.put("key", "ok");
+        return () -> Collections.unmodifiableMap(rv);
     }
 
     Properties additionalProperties() {
diff --git a/javers-spring-jpa/src/test/java/org/javers/spring/example/JaversSpringJpaApplicationConfig.java b/javers-spring-jpa/src/test/java/org/javers/spring/example/JaversSpringJpaApplicationConfig.java
index 6b66e7ac..51b70512 100644
--- a/javers-spring-jpa/src/test/java/org/javers/spring/example/JaversSpringJpaApplicationConfig.java
+++ b/javers-spring-jpa/src/test/java/org/javers/spring/example/JaversSpringJpaApplicationConfig.java
@@ -1,6 +1,5 @@
 package org.javers.spring.example;
 
-import com.google.common.collect.ImmutableMap;
 import org.javers.core.Javers;
 import org.javers.hibernate.integration.HibernateUnproxyObjectAccessHook;
 import org.javers.repository.sql.ConnectionProvider;
@@ -11,7 +10,6 @@ import org.javers.spring.auditable.AuthorProvider;
 import org.javers.spring.auditable.CommitPropertiesProvider;
 import org.javers.spring.auditable.SpringSecurityAuthorProvider;
 import org.javers.spring.auditable.aspect.JaversAuditableAspect;
-import org.javers.spring.auditable.aspect.springdata.JaversSpringDataAuditableRepositoryAspect;
 import org.javers.spring.auditable.aspect.springdatajpa.JaversSpringDataJpaAuditableRepositoryAspect;
 import org.javers.spring.jpa.JpaHibernateConnectionProvider;
 import org.javers.spring.jpa.TransactionalJaversBuilder;
@@ -31,6 +29,8 @@ import org.springframework.transaction.annotation.EnableTransactionManagement;
 
 import javax.persistence.EntityManagerFactory;
 import javax.sql.DataSource;
+import java.util.Collections;
+import java.util.HashMap;
 import java.util.Map;
 import java.util.Properties;
 
@@ -102,7 +102,9 @@ public class JaversSpringJpaApplicationConfig {
      */
     @Bean
     public CommitPropertiesProvider commitPropertiesProvider() {
-        return () -> ImmutableMap.of("key", "ok");
+        final Map<String, String> rv = new HashMap<>();
+        rv.put("key", "ok");
+        return () -> Collections.unmodifiableMap(rv);
     }
 
     /**
diff --git a/javers-spring/src/test/java/org/javers/spring/example/JaversSpringMongoApplicationConfig.java b/javers-spring/src/test/java/org/javers/spring/example/JaversSpringMongoApplicationConfig.java
index ad03d629..03dd33ed 100644
--- a/javers-spring/src/test/java/org/javers/spring/example/JaversSpringMongoApplicationConfig.java
+++ b/javers-spring/src/test/java/org/javers/spring/example/JaversSpringMongoApplicationConfig.java
@@ -1,7 +1,6 @@
 package org.javers.spring.example;
 
 import com.github.fakemongo.Fongo;
-import com.google.common.collect.ImmutableMap;
 import com.mongodb.MongoClient;
 import org.javers.core.Javers;
 import org.javers.core.JaversBuilder;
@@ -18,6 +17,10 @@ import org.springframework.context.annotation.EnableAspectJAutoProxy;
 import org.springframework.data.mongodb.core.MongoTemplate;
 import org.springframework.data.mongodb.repository.config.EnableMongoRepositories;
 
+import java.util.Collections;
+import java.util.HashMap;
+import java.util.Map;
+
 @Configuration
 @ComponentScan(basePackages = "org.javers.spring.repository")
 @EnableMongoRepositories({"org.javers.spring.repository"})
@@ -94,6 +97,8 @@ public class JaversSpringMongoApplicationConfig {
      */
     @Bean
     public CommitPropertiesProvider commitPropertiesProvider() {
-        return () -> ImmutableMap.of("key", "ok");
+        final Map<String, String> rv = new HashMap<>();
+        rv.put("key", "ok");
+        return () -> Collections.unmodifiableMap(rv);
     }
 }