Own classes for all windows and implemented vanilla-like shift click.

Fixes #1669 and #1482
No, it really just determines if `a_Item` is a fuel or not.

The problem with this class is that it's mis-named. It's not a single furnace recipe, it represents the collection of all the recipes. And it uses an `m_pState` member to move the implementation details from the header file to the cpp.