Make Spaceship use weapons factory properly #2

Proper way to get a weapon is now to pass a string with the weapon type
to the static method BuildWeapon in ConcreteWeaponFactory.
Add proper access to ability factories #2
Rename BuildWeapon to CreateWeapon #2
Add proper way to build ships #2

Move factory initializations from GameObject to ConcreteShipFactory.
Add methods to get ship types or factories; using the former is suggested.
Add method to build ship by passing the type as a parameter.
Add way to create IObstacles properly #2

Use ConcreteObstacleFactory static methods for creating obstacles
or finding available obstacle types.