Refactoring. Change obstacles and targets to be passed using references
to collections instead of arrays. Allows these lists to change
dynamically without the need to manually pass new arrays down to
entities. Minor gameplay tweaks, general cleanup.