Item constructor cleanup [READY]

This is purely a code cleanup, nothing functionality-wise is changed.
The main change by LOC is invoking the item constructor like:
```item newitem("item_id");```
instead of:
```item newitem(itypes["item_id"]);```

Removed game::nextinv and associated methods, now inventory letters aren't coupled to the game instance, just to the player inventory.

As suggested by BevapDin, took advantage of refactoring the item constructor and item_factory::find_template() to make the item constructor generate more informative fake items when the itype definition doesn't exist.  Removed some now-redundant checks of itype existence as well, since the item constructor will catch them.  This means fewer modules include item_factory.

I decided to put off removing the itypes map and pushing invlet assignments inside the inventory class where they belong to another PR, this is big enough as it is.

This needs to go in soon, it gathers conflicts very rapidly :/