TODO:
- Refactor the database.
- Custom prototype properties for overrides etc.
- Technology pages (tech screen pauses the game and prevents any nice logic).
- Go through listboxes list below and implement those that are missing.
- Search pane filtering by a specified list and other filtering options.
- Improve behavior when other GUIs are open (overlay instead of replace).
- Recipes with no technologies to unlock them and are enabled by default should show as unlocked with their crafter

BUGS:
- Alt+click on item-on-ground doesn't work.

API additions:
- get_filtered_entity_prototypes:
    - ingredient_limit
    - add characters to crafting_category filter
    - energy source filters (type, fuel category, fluid, etc)

All list boxes from 3.0 - not all will be re-added:
accepted_equipment
accepted_modules
affects_recipes
burned_in
burnt_result_of
can_burn
can_craft
can_mine
entities
equipment
equipment_categories
expected_resources
fluids
fuel_categories
gathered_from
ingredient_in
ingredients
inputs
items
made_in
mined_by
mined_from
mining_drills
placed_by
placed_in
prerequisite_of
prerequisites
product_of
products
pumped_by
recipe_categories
recipes
research_ingredients_per_unit
researched_in
resource_categories
resources
rocket_launch_product_of
rocket_launch_products
temperatures
unlocked_by
unlocks_entities
unlocks_equipment
unlocks_fluids
unlocks_items
unlocks_recipes

Burner classes:
Boiler?
Inserter
Lab
Mining drill
Pump
Radar
Reactor
