Added potions and entity effect accessors

Don't merge yet - opening PR for public discussion and suggestions.
* Fixes #922
* Fixes #942
* Fixes #899
* Fixes #926

**What I've done**
- Entity effect map in `cPawn`
- Removed food-poisoning-specific code in `cPlayer`, instead opting for the centralized entity effect approach
- Implemented some entity effects
- Implemented milk
- Implemented drinkable potions
- Implemented splash potions (affect players and mobs)
- Fixed issue preventing players from instantaneously healing
- Cave spider poisons its victim

**What I have yet to do**
- All of the many TODO's I've left
  - Implement the rest of the entity effects
  - Wither skull implementation
  - Better potion splash effectiveness equation
- Fix splash potion color when thrown

**What I need help with**
- API hooks

Feel free to contribute at the `potions` branch. 
I just had a look around. according to http://stackoverflow.com/a/11996970/1937198:

    union foo { int a; short b; };
    
    // This is UB:
    foo bar;
    bar.a = 5;
    short x = bar.b;

    // But this is not
    foo bar, baz;
    bar.a = 5;
    memcpy(&baz, &bar, sizeof(bar));
    short x = baz.b;

Also as of C11 it is valid C so it might make its way in to the C++ standard. Also outside the serialisation code there is little reason to switch between different active members. If it is a potion, we're always going to treat it as a potion. Or I could just use casts and create bitfield types only used by the manipulation code. Its a bit messier than unions but strict C++ does not have any real way to encode what we want in the type system.