AI, level gen, crafting, and save file improvements

- improved floating text behavior
- crafting now detects if you have more than one of a certain item
- fixed non-weapon items doing knockback
- fixed crafting not working with item previews enabled
- added new enemy: robot
- fixed glitch where projectiles would not shoot after attempting to
craft a null object
- added custom targeting to projectiles (so enemies can shoot you)
- added ranged AI and melee AI
- fixed item preview and previous recipe not clearing after you craft
the item
- fixed inverse knockback bug
- reduced explosion knockback effects
- enemies will not walk off cliffs (will add a scaredOfHeights toggle
later)
- added getCollidingPlatform(Rectangle r) to physics class
- enemies cannot see you through walls
- fixed bug where blackholes would not work in side-scrolling levels
- enemies do not collide with other enemies now
- changed the way levels are loaded: now the entire floor is generated
when you start the game and is pieced together like a puzzle
- the floor generation matches level exits to level entrances so you do
not get stuck (hopefully)
- the IO class now properly closes the FileOutput and FileInput streams
(fixes not being able to delete save files)
- added a toggle to items (whether or not the item is added to the
object list; meaning now you can spawn items in without having them
appear in the world, like when generating the loot in chests)
- converted the recipe ingredients from actual items to instances of
RecipeIngredient
- added some new methods to StorageUnit and cleaned up the storage unit
code
- items in chest are not processed by the game
- started work on saving all data to file, not just the level and floor
ID