refactore ImmutableValueMapDecorator to ImmutableValueMap and mimick API behavior of guava immutable maps