Using index operator instead of Get and Set methods for bag
Removed all internal usage of Bag.Get/Set methods
Changed BagEnumerator to be a struct to avoid generating garbage

This is used by List<T> as well so there should be no problems.
Bag<T> now implements IList<T>

There were only a few methods missing so implementing IList<T> was easily implemented.
Fixed warnings about problems in comments
Added unittests for EntityComponentSystem<...> and IComponent<T>