remove immutable collections from public API

Simplify the API by using the standard collection interfaces for
parameter and return types instead of Guava's immutable collections.
Makes value classes itself responsible for ensuring their immutable
nature (as the can not longer rely on their input to be immutable).