Implements buying/selling/trading with npcs

The most controversial parts of this commit is:

 1. The renaming of food-liquid to potions which i think makes more sense than food-liquid which isn't really a term and since you're drinking "food-liquids" just as you are potions. They're basically potions with a hp boost.
 1. The code duplication in Trading.java. There's not really any good way around this because of the many instances in which npc and player are switched. I'll slowly refine it over time though. And honestly with 297 additions and 571 deletions, it's not too much.

Thanks and I hope this gets merged.