Adds ImmutableArray and ImmutableIntMap classes

Methods can return `Array` and `IntMap` objects as references to `ImmutableArray` and `ImmutableIntMap` respectively to disallow operations that modify the state of such collections.

`ImmutableIntMap` allows iteration over values, keys and entries although calling `remove()` will throw `GdxRuntimeException`.

This would help in making APIs more robust and harder for the user to break things.

Ashley will depend on Libgdx core to avoid containers duplication and it would need this immutable interfaces.

Later on, if people like this, we could add them to the rest of collections.

@badlogic asked me to create a PR rather than commiting directly so we can discuss the details more easily.
final