Added some helper mapping classes for easier use of commodities as keys

So I've added the Commodity.Map and Commodity.Set classes that are similar to the EnumMap implementation of Java. We are not able to use this implementation because the Commodity has some generics.

Furthermore, the CommodityProfile.Map extends this further for typesafe casting of those generics. This means that we now can use:
```
CommodityProfile.Map profilemap = new CommodityProfile.Map(x, y);
CommodityProfile<Energy,Power> profile = profilemap.get(Commodity.ELECTRICITY);
CommodityProfile<Volume, VolumetricFlowRate> profile2 = profilemap.get(Commodity.GAS);
```

Let me know what you think.